繁体   English   中英

从C ++调用lua函数时出现“错误处理错误”

[英]“Error in error handling” when calling lua function from C++

这与如何从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

functions.lua:

function test()
  return "test"
end

错误:

"Error in error handling"

当我使用ZeroBrane通过简单地测试此Lua脚本时:

init()
print(test())

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

我在这里做错了什么? 为什么以这种方式使用loadfile似乎不起作用? lua是否不会初始化为使用C ++启动它的常规功能? 加载文件如何通过ZeroBrane而不是C ++进行工作真是很奇怪。

我正在使用Selene ,它是Lua的C ++ 11仅限标头绑定。

不要忘记建立lua上下文!

建立Lua上下文

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM