这不是关于如何从C ++调用lua函数。我已经可以成功地做到这一点。这是关于lua函数" loadfile"在C ++调用的函数中使用时不再有效。
我试图将lua文件加载到另一个lua文件中,以便我可以调用它的函数。如果我将tests()从functions.lua移动到game.lua, mystring 接收" test"很好。
但是,当我将init()函数添加到game.lua文件并将test()移动到functions.lua文件时:
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,这是一个仅限C ++ 11标头绑定到Lua。
答案 0 :(得分:0)
不要忘记建立lua语境!
建立Lua背景
using namespace sel;
State state; // creates a Lua context
State state{true}; // creates a Lua context and loads standard Lua libraries