#include
#include
#include
//Luaのカスタムデリータ
struct LuaDeleter {
typedef lua_State* pointer;
void operator()(lua_State* ptr)
{
if(ptr) {
lua_close(ptr);
}
}
};
typedef std::unique_ptr LuaPtr;
int add(lua_State* L)
{
int a = (int)lua_tonumber(L, 1);
int b = (int)lua_tonumber(L, 2);
int ret = a + b;
lua_settop(L, 0;
lua_pushnumber(L, ret);
return 1;
}
int main()
{
LuaPtr L(luaL_newstate()); //LuaのVMを生成
luaL_openlibs(L.get()); //Luaの標準ライブラリを開く
//Luaに関数を登録
lua_register(L.get(), "add", &add);
//登録されているか確認
luaL_dostring(L.get(), "print(add(10,9))");
} //Lは関数を抜けると自動的に破棄される
std::unique_ptrを使ったLuaのテストプログラム(C言語編)
std::unique_ptrを使ったLuaのテストプログラム(C言語編)
最後に編集したユーザー naohiro19 on 2014年5月31日(土) 08:01 [ 編集 2 回目 ]
コメントはまだありません。