Lua C API 不支持指针

这是我的代码 我在 C++ 代码中创建了一个结构体和一个静态函数

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 都不熟悉。请问问题可能出在哪里?

点赞
用户5446268
用户5446268

解决问题,NVM。实际上是因为指针问题。

2018-03-02 20:25:51