Das C++ (mit Qt libs) Projekt, für das ich kodiere, ist ein "eingebettetes" Lua 5.1 Subsystem welches repräsentiert wird durch, wie ich es verstehe, ein lua_State
; um einzurichten, wo externe Lua-Module (.lua
Dateien) und Bibliotheken (.dll
oder .so
Dateien je nach OS) gespeichert werden, so dass sie required
wie benötigt werden kann, muss ich die globalen package.path
und package.cpath
Tabellenmitglieder manipulieren.Lua package.cpath & path mit C++ code erhalten
Ich habe Code, der erfolgreich diese Einträge mit C++ Code setzen kann und ich kann die Ergebnisse im eingebetteten System sehen.
Allerdings kann ich nicht in der Lage zu von der C++ Seite der Dinge zu bekommen. Derzeit für package.path
habe ich folgendes:
QString TLuaInterpreter::getLuaPath()
{
lua_State* L = pGlobalLua;
if (!L) {
qDebug() << "LUA CRITICAL ERROR: in TLuaInterpreter::getLuaPath - no suitable Lua execution unit found.";
return QString("LUA CRITICAL ERROR");
}
lua_getglobal(L, "package.path");
lua_getfield(L, LUA_GLOBALSINDEX, "package.path");
QString result(QString::fromUtf8(lua_tostring(L, 1)));
return result;
}
Ich würde eine ;
getrennte Liste von Einträgen wie erwartet:
./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua
aber ich immer nur eine leere QString
zurück, anstatt bekommen. Nun bin ich mit Lua nicht so vertraut wie mit C/C++, also ist es möglich, dass dies ein Lua-Stack-Manipulationsproblem ist, aber ich bin mir sicher, dass ich die richtige lua_State
Instanz habe - was ist bei dieser Methode falsch?