在从C++调用Lua函数时出现"错误处理中的错误"

这并不是关于如何从C++调用Lua函数。我已经可以成功地做到这一点。这是关于Lua函数"loadfile"在被C++调用的函数中不再起作用的问题。

我正在尝试将一个Lua文件加载到另一个Lua文件中,以便我可以调用它的函数。如果我将test()从functions.lua移动到game.lua中,_mystring_可以正常收到"test"。

然而,当我将init()函数添加到game.lua文件中并将test()移动到functions.lua文件中时:

  1. loadfile似乎不再起作用,产生"错误处理中的错误"。
  2. 调用test()不起作用(可能是由于loadfile失败),这也会导致"错误处理中的错误"消息。

C++:

// 在加载game.lua之后...
state["init"]();
std::string mystring = state["test"]();

game.lua:

function init()
    loadfile("functions.lua")()
end

functions.lua:

function test()
  返回"测试"
end

错误:

"错误处理中的错误"

当我使用ZeroBrane来测试这个Lua脚本时,只需要做:

init()
print(test())

它都能正常工作...所以我要么在使用C++时出错了,要么在使用Lua文件时出错了。

我在使用 Selene,一个C++11头文件的绑定到Lua。

点赞
用户280904
用户280904

不要忘记建立 Lua 上下文!

建立 Lua 上下文

using namespace sel;
State state; // 创建 Lua 上下文
State state{true}; // 创建 Lua 上下文并加载标准 Lua 库
2016-05-16 00:55:11