gpt4 book ai didi

c++ - 从 C++ 调用 lua 函数时为 "Error in error handling"

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:46:30 24 4
gpt4 key购买 nike

这与如何从 C++ 调用 lua 函数无关。我已经可以成功地做到这一点。这是关于 lua 函数“loadfile”在 C++ 调用的函数中使用时不再起作用的问题。

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

但是,当我将 init() 函数添加到 game.lua 文件并将 test() 移动到 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

函数.lua:

function test()
return "test"
end

错误:

"Error in error handling"

当我使用 ZeroBrane 来测试这个 Lua 脚本时,只需执行以下操作:

init()
print(test())

一切正常...所以我使用 C++ 或使用 lua 文件的方式有问题。

我在这里做错了什么?为什么以这种方式使用 loadfile 似乎不起作用? lua 是否没有被初始化到看到它的常规函数​​被 C++ 启动的程度?加载文件如何通过 ZeroBrane 而不是 C++ 工作真的很奇怪。

我正在使用 Selene ,一个 C++11 头文件绑定(bind)到 Lua。

最佳答案

不要忘记建立 lua 上下文!

建立 Lua 上下文

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

关于c++ - 从 C++ 调用 lua 函数时为 "Error in error handling",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37244508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com