В настоящее время я пытаюсь связать скрипт Lua с приложением C ++ хоста. Для моего скрипта Lua все, что у меня есть, это:
io.write(string.format("From Lua."));
Я использую Qt Creator для этого и пытаюсь вызвать скрипт следующим образом:
lua_State *state = luaL_newstate();
lua_call(state , 0 , 0);
Что постоянно дает мне ошибку PANIC: unprotected error in call to Lua API (attempt to call a string value)
.
Я пытался обернуть скрипт в функцию, подобную этой:
function main()
io.write(string.format("From Lua.With Progress"));
end
И затем вызывается с тем же кодом, что и раньше, но с добавлением:
lua_getglobal(state , "main");
lua_pcall(state , 0 , 0 , 0);
, который не дает ошибки, но:
lua_call(state , 0 , 0)
дает ошибку PANIC: unprotected error in call to Lua API (attempt to call a nil value)
.
После дополнительных попыток устранения неполадок я обнаружил, что luaL_loadfile(state , "EngineRxer.lua")
возвращает значение 7 вместо 0, поэтому я предполагаю, что сценарий не удалось загрузить в первую очередь.
Я также проверил свой рабочий каталог run в проектах Qt Creator -> Build and run -> run , и они находятся в том же каталоге, что и скрипт Lua.
Я сослался на:
Связывание Lua с Qt
Qt с Lua | Где разместить файлы lua
И даже некоторые форумы Qt:
http://www.qtcentre.org/threads/60693-Can-not-use-Lua-in-QtCreator
http://www.qtcentre.org/threads/62772-Lua-into-Qt
Кроме того, вероятно, важно упомянуть, как выглядит мой .pro-файл, все библиотеки Lua и его включения уже есть:
LIBS += \
/usr/local/Cellar/lua/5.3.4_3/lib/liblua.5.3.4.dylib
INCLUDEPATH += \
/usr/local/Cellar/lua/5.3.4_3/include
Что еще более важно, после еще большего устранения неполадок я решил создать фиктивный тестовый проект для Netbeans (NonQt просто CML), и он работал и работал просто отлично. Даже если я попытаюсь создать фиктивную программу fstream
для записи в пустой файл .txt, она не будет знать, где ее найти. Так что я подозреваю, что это проблема Qt Creator, но у меня все пути и каталоги сборки указаны для CWD.