gpt4 book ai didi

c++ - 从 C++ 调用 Lua 表函数 w/self in function

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:11:36 25 4
gpt4 key购买 nike

我的目标是简单地从 C++ 调用一个表函数,该函数在函数内部使用“self”来访问该表的字段和函数。我不断在具有“self.name”的行上收到可爱的“尝试调用空值(本地 self )”。下面是我的 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 函数?我知道“。”与 lua 中的 ':' 相比,利用 'self'。如果我在 Lua 脚本中添加一个调用,如“Foo:Update()”,一切都会完美无缺。这让我难住了。

最佳答案

您需要将 Foo 的值作为第一个参数发送。所以,做

lua_pushvalue(L, -2);
lua_pcall(L, 1, 0, 0);

关于c++ - 从 C++ 调用 Lua 表函数 w/self in function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com