"错误处理错误"从C ++

时间:2016-05-15 22:48:35

标签: c++ lua

这不是关于如何从C ++调用lua函数。我已经可以成功地做到这一点。这是关于lua函数" loadfile"在C ++调用的函数中使用时不再有效。

我试图将lua文件加载到另一个lua文件中,以便我可以调用它的函数。如果我将tests()从functions.lua移动到game.lua, mystring 接收" test"很好。

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

  1. loadfile似乎不再起作用,在错误处理中产生"错误"
  2. 调用test()不起作用(可能是因为加载文件失败),这也导致错误处理错误"消息。
  3. 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。

1 个答案:

答案 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