4

我尝试在 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)

那没有用,我收到错误消息:

[string "?"]:7: function arguments expected near <eof>

但是当我添加

print(needReload)

在 lua 脚本的末尾,它工作得很好。我究竟做错了什么?

4

2 回答 2

1

错误消息意味着 Lua 在看到之后Res:s但在看到之前到达了源的末尾(

我怀疑这script.size()是错误的。但我无法解释为什么添加该行有效。

于 2014-12-19T11:34:14.883 回答
0

谢谢大家的答案。是的,当它被替换为开始工作正常时,这对script.size()coz 来说是个问题。e = luaL_loadbuffer(luaEngine, script.c_str(), strlen(script.c_str()), NULL);对不起我的愚蠢问题。

于 2014-12-19T12:40:26.657 回答