2017-12-22 2 views
0

내가 코딩하고있는 C++ (Qt 라이브러리 사용) 프로젝트는 이해할 수있는대로 ""으로 표현되는 "embedded"루아 5.1 서브 시스템입니다. 외장 Lua 모듈 (.lua 파일)과 라이브러리 (OS에 따라 .dll 또는 .so 파일)가 어디에 저장 될지를 설정하려면 package.pathpackage.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 인스턴스가 올바르다는 것을 확신합니다 -이 방법에서 잘못된 점은 무엇입니까?

답변

0

동시에 lua_getglobal(L, "package.path") 수 없으면 먼저 스택에 package을 가져와야합니다.

관련 문제