【发布时间】:2017-03-25 21:36:17
【问题描述】:
我的目标是简单地从 C++ 调用一个表函数,该函数在函数内部使用“self”来访问该表的字段和函数。我一直在有'self.name'的行上得到可爱的'试图调用一个零值(本地自我)'。下面是我的 Lua 脚本。
Foo = { name = 'Foo' }
function Foo:OnUpdate()
print('In OnUpdate in Lua')
print(self.name)
end
下面是我的 C++ 代码(暂时忽略任何错误处理)。
lua_State* L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "foo.lua");
lua_getglobal(L, "Foo");
lua_getfield(L, -1, "OnUpdate");
lua_pcall(L, 0, 0, 0);
当调用“lua_pcall”时,我在 CLI 中看到“In OnUpdate in Lua”,但从来没有看到“Foo”。如果我检查来自 'lua_pcall' 的错误,我会收到上面提到的错误消息。在调用“lua_pcall”之前我是否缺少某个 Lua C API 函数?我知道'。 vs. ':' 在 lua 中使用 'self'。如果我在 Lua 脚本中添加一个调用,例如 'Foo:Update()',一切都会完美运行。这让我很困惑。
【问题讨论】: