从C++调用lua函数时出现“错误处理错误”
问题描述:
这不是关于如何从C++调用lua函数。我已经可以成功地做到这一点。这是关于lua函数“loadfile”在用C++调用的函数中不再起作用的。从C++调用lua函数时出现“错误处理错误”
我想加载一个lua文件到另一个lua文件中,以便我可以调用它的函数。如果我将test()从functions.lua移动到game.lua,mystring接收“测试”就好了。
然而,当我添加了init()函数的game.lua文件和移动测试()到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,这是一个C++ 11头只绑定到Lua。
答
不要忘了建立lua背景!
建立Lua的语境
using namespace sel;
State state; // creates a Lua context
State state{true}; // creates a Lua context and loads standard Lua libraries