Аргумент функции lua ожидается около & lt; eof & gt;

Я пытаюсь использовать lua в проекте C ++. Для выполнения Луа я пишу это:

#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

Решение

Сообщение об ошибке означает, что Lua достиг конца источника после просмотра Res:s но прежде чем увидеть (,

Я подозреваю что script.size() неправильно. Но я не могу объяснить, почему добавление этой строки работает.

1

Другие решения

Спасибо всем за ваши ответы. Да, это была проблема с script.size() потому что, когда он был заменен на e = luaL_loadbuffer(luaEngine, script.c_str(), strlen(script.c_str()), NULL); это начало работать нормально. Извините за мой глупый вопрос.

0

По вопросам рекламы [email protected]