我尝试在 C++ 项目中使用 lua。对于 lua 执行我这样写:
#include <lua.hpp>
...
luaEngine = luaL_newstate();
luaL_openlibs(luaEngine);
register_results(luaEngine); // For register c++ object in the LUA script as metatable
lua_pushstring(luaEngine, resultsId.c_str());
lua_setglobal(luaEngine, "resultsId");
lua_pushboolean(luaEngine, needReloadModel);
lua_setglobal(luaEngine, "needReload");
...
e = luaL_loadbuffer(luaEngine, script.c_str(), script.size(), NULL);
if(e != 0)
// error message
e = lua_pcall(luaEngine, 0, 1, 0);
if(e != 0)
// error message
...
lua_close(luaEngine);
和 lua 脚本:
local Res = ResUpdateLUA(resultsId)
if current_result == "Normal" or current_result=='-' then
status = 'E'
else
status = 'O'
end
needReload = Res:setShowAnalyte('2320', status)
那没有用,我收到了错误消息:
但是当我添加
print(needReload)
在 lua 脚本的末尾,它运行良好。我究竟做错了什么?
最佳答案
该错误消息表示 Lua 在看到 Res:s
之后但在看到 (
之前到达了源代码的末尾。
我怀疑 script.size()
是错误的。但我无法解释为什么添加该行有效。
关于c++ - lua 函数参数应在 <eof> 附近,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27564469/