2017-01-15 3 views
1

lua에 대한 호출을 구현하는 main 메소드로 cpp 파일을 만들었습니다. 나는 다음과 같은 오류가 나타납니다 QT 프로젝트 실행 + 컴파일 할 때 :Qt with Lua | lua 파일을 어디에 둘 것인지.

PANIC: unprotected error in call to Lua API (attempt to call a string value)

문제는 루아 루아 파일이 실행되는 찾을 수 있다는 것입니다을 (적어도 내가 생각하는). 그래서 모든 디버그 디렉터리와 주 디렉터리에 파일을 복사했지만 여전히 작동하지 않았습니다.

도와 주셔서 감사합니다.


MAIN.CPP

#include <stdio.h> 

extern "C" { 
    #include "lua.h" 
    #include "lualib.h" 
    #include "lauxlib.h" 
} 

lua_State* L; 

int main(int argc, char *argv[]) 
{ 


    /* initialize Lua */ 
    L = luaL_newstate(); 

    /* load Lua base libraries */ 
    luaL_openlibs(L); 

    /* load the script */ 
    luaL_loadfile(L, "test.lua"); 

    lua_call(L, 0, 0); 

    /* cleanup Lua */ 
    lua_close(L); 

} 
당신이 중 하나를 사용하지 않기 때문에이 정말 Qt는 관련이없는

-- test 

print("Hello World") 

답변

1

Qt가 사용자의 디렉토리를 기본 경로로 사용하는 것처럼 보입니다. 모든 매력처럼 작동이 폴더에 루아 스크립트를 놓을 때 (감사 Rich)

QDir dir("."); 
qDebug() << dir.absolutePath(); 

:

당신과 함께이 유효성을 검사 할 수 있습니다.

작업 디렉토리는 다음 명령으로 설정 될 수 있습니다

QDir::setCurrent() 

그리고

QCoreApplication::applicationFilePath() 

와 함께 경로는 EXE가에 사임 곳으로 설정할 수 있습니다

0

파일 test.lua 소프트웨어의 Qt API.

lual_loadfile 메서드가 반환 한 상태를 this example과 같이 확인해야합니다. 그것은 당신에게 잘못된 일에 대한 몇 가지 추가 단서를 제공해야합니다.

경우에 따라 QtLua module이 해당 될 수 있습니다.

+0

이봐. 빠른 답변 주셔서 감사합니다! 문제는, lua가 제공하는 메시지는 파일을 찾지 못하고 파일을 찾을 수 없다는 것입니다. 파일을로드 할 수 없습니다 : test.lua를 열 수 없습니다 : 해당 파일이나 디렉토리가 없습니다. -1을 -2로 변경하십시오. 파일을로드 할 수 없습니다 : (null) QtLua는 유망 해 보이지만 '수동'방식을 선호합니다. – codewing

+0

어떤 OS를 사용하고 계십니까? – SGaist

+0

현재 Win10 (64 비트) – codewing

1

이것은 런타임 파일 작업이므로이 함수는 현재 디렉토리 만보고있을 가능성이 큽니다.

+0

에서 컴파일 된 디버그 응용 프로그램이 실행되는 위치를 알고 거기에 Lua 파일을 추가했지만 불행히도 작동하지 않았습니다. 나는 또한 그 디렉토리의 상위 디렉토리에 추가하려고했지만 이것도 작동하지 않았다. – codewing

+0

응용 프로그램을 시작할 파일을 넣습니다. – Rich

+1

처형되는 곳을 알고 계실까요? IDE를 사용하고있는 것처럼 들리는가요? – Rich

관련 문제