내가 코딩하고있는 C++ (Qt 라이브러리 사용) 프로젝트는 이해할 수있는대로 ""으로 표현되는 "embedded"루아 5.1 서브 시스템입니다. 외장 Lua 모듈 (.lua
파일)과 라이브러리 (OS에 따라 .dll
또는 .so
파일)가 어디에 저장 될지를 설정하려면 package.path
및 package.cpath
테이블 멤버를 조작해야합니다.C++ 코드를 사용하여 Lua package.cpath & path를 얻는 중
코드가이고 C++ 코드로 설정하면 임베디드 시스템에서 결과를 볼 수 있습니다.
그러나 나는 할 수있을 것 같지 않다. 그 것들을 C++ 측면에서 얻는다.
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;
}
내가 좋아하는 항목의 ;
로 구분 된 목록 기대 : 현재 package.path
위해 나는 다음이
./?.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
을하지만 난 오직 대신 다시 빈 QString
를 얻을. 이제는 루아와 친숙하지 않아서 C/C++에 익숙하지 않습니다. 그래서 루아 스택 조작 문제 일 가능성이 있습니다 만, 나는 lua_State
인스턴스가 올바르다는 것을 확신합니다 -이 방법에서 잘못된 점은 무엇입니까?