lua函数参数预期在<eof> </eof>附近

时间:2014-12-19 10:50:15

标签: c++ lua lua-api

我尝试在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脚本的末尾它很好用。我做错了什么?

2 个答案:

答案 0 :(得分:1)

错误消息表示Lua在看到Res:s之后但在看到(之前到达了源头。

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

答案 1 :(得分:0)

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