2016-05-15 152 views
2

这不是关于如何从C++调用lua函数。我已经可以成功地做到这一点。这是关于lua函数“loadfile”在用C++调用的函数中不再起作用的。从C++调用lua函数时出现“错误处理错误”

我想加载一个lua文件到另一个lua文件中,以便我可以调用它的函数。如果我将test()从functions.lua移动到game.lua,mystring接收“测试”就好了。

然而,当我添加了init()函数的game.lua文件和移动测试()到functions.lua文件:

  1. 的loadFile似乎不再工作,在错误产生“错误处理“
  2. 调用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。

回答

0

不要忘了建立lua背景!

建立Lua的语境

using namespace sel; 
State state; // creates a Lua context 
State state{true}; // creates a Lua context and loads standard Lua libraries 
相关问题