Lua 與 C 擴充 -透過 C++ 執行檔處理類別

Lua 與 C 擴充 -透過 C++ 執行檔處理類別

環境
windows 11 64bit
Visual Studio 2022
Lua 5.4.6

先來這邊取得 3 個檔案
https://husking-studio.com/extending-lua-with-c-class

lunar.h
pirate.h
pirate.cpp

main.cpp

#include <iostream>
#include <stdio.h>
#include "pirate.h"
using namespace std;

#include <K:\Lua\546\lib17\include\lua.hpp>

#ifdef _WIN64
#ifdef _DEBUG
#pragma comment(lib,"K:\\Lua\\546\\lib17\\x64\\Debug\\lua54.lib")
#else
#pragma comment(lib,"K:\\Lua\\546\\lib17\\x64\\Release\\lua54.lib")
#endif
#else
#ifdef _DEBUG
#pragma comment(lib,"K:\\Lua\\546\\lib17\\x86\\Debug\\lua54.lib")
#else
#pragma comment(lib,"K:\\Lua\\546\\lib17\\x86\\Release\\lua54.lib")
#endif
#endif

lua_State* LuaOpen()
{
	//lua_State* pLua = lua_open();
	lua_State* pLua = luaL_newstate();
	if (!pLua)
	{
		cout << "Failed to open Lua.\n" << endl;
		return 0;
	}

	luaL_openlibs(pLua);
	return pLua;
}

int main()
{
	lua_State* L = LuaOpen();

	Lunar<CPirate>::Register(L);
	luaL_dofile(L, "test.lua");

	lua_close(L);

	system("pause");
	return 0;
}

test.lua

function Pirate:getName()
	return self:GetName()
end
function Pirate:setName(name)
	self:SetName(name)
end
function Pirate:getAge()
	return self:GetAge()
end
function Pirate:setAge(age)
	self:SetAge(age)
end

a = Pirate(100)
print(a:getAge())
a:setAge(200)
print(a:getAge())
a:setName("abc")
print(a:getName())

b = Pirate:new(30)
print(b:getAge())

執行結果

回到目錄
https://husking-studio.com/extending-lua-with-c

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *