我嘗試在C++項目中使用lua。對於LUA執行我寫這篇文章:lua函數參數預計接近<eof>
#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腳本結束時它很好用。我究竟做錯了什麼?
你能打印輸出到'luaL_loadbuffer'的'script.c_str()'和'script.size()'的內容嗎?顯示兩個版本,一個使用'print(needReload)',另一個不使用。 – greatwolf 2014-12-19 11:39:27