这就是我做的。我在C ++代码中创建了一个struct和一个静态函数
struct ItemDefinition {
int64_t price;
};
int static getPrice(lua_State* L) {
ItemDefinition* def = (ItemDefinition*)lua_touserdata(L, 1);
printf("%p\n", def);
printf("%d\n", def->price);
return 0;
}
我还在lua中注册了该函数并初始化了一个ItemDefination对象。
ItemDefinition def;
def.price = 120;
lua_pushlightuserdata(lua_state_, (ItemDefinition*)&def);
lua_setglobal(lua_state_, "def");
luaL_Reg module[] = {{"getPrice", &getPrice}, {NULL, NULL}};
从我的Lua脚本中,我只是简单地调用该函数
getPrice(def)
如果我打印出def的地址,如果工作正常。所以我确信该函数被成功调用。但是,如果我想要获得def->price
,我将从地址消毒剂"==283789==ERROR stack use after return"
得到一个错误我不熟悉c++和lua。你能帮忙解决问题所在吗?
解决问题,NVM。这实际上是因为指针问题。