Call Lua table function from C++ w/ self in function
我的目标是从C ++中简单地调用一个表函数,该函数在函数内部使用" self"来访问该表的字段和函数。 在具有" self.name"的行上,我不断得到可爱的"尝试调用nill值(本地自身)"。 以下是我的Lua脚本。
1 2 3 4 5 6 | Foo = { name = 'Foo' } function Foo:OnUpdate() print('In OnUpdate in Lua') print(self.name) end |
下面是我的C ++代码(暂时忽略任何错误处理)。
1 2 3 4 5 6 | 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中看到"在Lua的OnUpdate中",但从未看到" Foo"。 如果我从" lua_pcall"检查错误,则会收到上述错误消息。 在调用" lua_pcall"之前,我是否缺少某个Lua C API函数? 我知道"。" 与lua中的":"对"自我"的利用。 如果我在Lua脚本中添加" Foo:Update()"之类的调用,则一切正常。 这让我难过。
您需要将
1 2 | lua_pushvalue(L, -2); lua_pcall(L, 1, 0, 0); |