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())
執行結果