當我將Lua整合到我的C程序中時,我一直在使用指向C結構的指針來存儲我需要在與Lua綁定的方法中重用的對象州。在Lua註冊表中存儲C結構
但是,一旦我從主程序中分離出我的Lua庫文件,這就不起作用,所以它似乎需要使用註冊表來存儲我的結構。
我該如何去存儲我的C結構指針在Lua註冊表中?
這是目前我在做什麼:
static augeas *aug = NULL;
static int lua_aug_get(lua_State *L) {
// Use aug to do something here
/* return the number of results */
return 1;
}
struct lua_State *luaopen_augeas(augeas *a) {
lua_State *L = luaL_newstate();
aug = a; // this clearly does not work
luaL_openlibs(L);
// The methods below will need to access the augeas * struct
// so I need to push it to the registry (I guess)
static const luaL_Reg augfuncs[] = {
{ "get", lua_aug_get },
{ "label", lua_aug_label },
{ "set", lua_aug_set },
{ NULL, NULL }
};
luaL_newlib(L, augfuncs);
lua_setglobal(L, "aug");
return L;
}
編輯:從答案,我在IRC上了,看來我應該使用metatable,所以我目前正在研究這個。