【发布时间】:2016-05-15 22:48:34
【问题描述】:
这不是关于如何从 C++ 调用 lua 函数。我已经可以成功地做到这一点。这是关于 lua 函数“loadfile”在被 C++ 调用的函数中使用时不再起作用。
我正在尝试将一个 lua 文件加载到另一个 lua 文件中,以便调用它的函数。如果我将 test() 从 functions.lua 移动到 game.lua,mystring 接收到“test”就好了。
但是,当我将 init() 函数添加到 game.lua 文件并将 test() 移动到 functions.lua 文件时:
- loadfile 似乎不再起作用,产生“错误处理错误”
- 调用 test() 不起作用(可能是由于加载文件失败),这也会导致“错误处理错误”消息。
C++:
// Having loaded game.lua...
state["init"]();
std::string mystring = state["test"]();
game.lua:
function init()
loadfile("functions.lua")()
end
functions.lua:
function test()
return "test"
end
错误:
"Error in error handling"
当我使用 ZeroBrane 来测试这个 Lua 脚本时,只需这样做:
init()
print(test())
一切正常...所以我使用 C++ 或使用 lua 文件的方式有问题。
我在这里做错了什么?为什么以这种方式使用 loadfile 似乎不起作用? lua 没有被初始化到看到它的常规函数由 C++ 启动的地步吗?真的很奇怪 loadfile 是如何通过 ZeroBrane 而不是 C++ 工作的。
我正在使用 Selene,这是一个与 Lua 的仅 C++11 标头绑定。
【问题讨论】: