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

0

回答ありがとうございます。はい、それは正常に動作script.size()するように交換されたときの cozの問題e = luaL_loadbuffer(luaEngine, script.c_str(), strlen(script.c_str()), NULL);でした。私の愚かな質問で申し訳ありません。

于 2014-12-19T12:40:26.657 に答える