2012-11-24 6 views
3

크로스 플랫폼 Qt 오디오 애플리케이션을 개발 중입니다. Linux에서는 응용 프로그램이 아무런 문제없이 실행되지만 Windows에서는 Qt Creator에서 시작할 때 응용 프로그램이 실행되지 않습니다. Qt 애플리케이션이 Qt Creator 내에서 실행되지 않습니다.

릴리스 구성 (또는 디버깅없이) 실행, Qt는 창조주는 단순히 말한다 :

을 "이 프로그램이 예기치 않게 종료되었습니다."

내가 디버그 구성 (또는 디버깅)을 실행하는 경우는, Qt는 창조주는 말한다 :

"시작 프로그램 중에 코드 0x0000135로 종료."

Google 검색 오류로 인해 전혀 도움이되지 않아서 응용 프로그램에 필요한 모든 .exe 및 .dll (Qt 라이브러리 필요 - QtCore 포함)을 빈 디렉토리에 복사하고 응용 프로그램을 완벽하게 실행하기로 결정했습니다. 리눅스 에서처럼.

그래서이 문제는 Windows에서 응용 프로그램에서 필요로하는 DLL을 찾지 못하는 것 같아요.

이 문제는 내 시스템을 Windows 8로 업그레이드 한 지난 주말에 나타났습니다. 이전에는 (Windows 7에서) 그런 문제가 없었습니다.

빌드 매개 변수 (.user 파일에 저장 됨)를 수정하는 것을 포함하지 않는 솔루션을 아는 사람이 있습니까?

Linux에서 응용 프로그램을 테스트 할 때이 파일이 무효화되고 해당 버전의 파일을 보관하고 싶지 않기 때문에이 작업을 원하지 않습니다.

+0

Creator와 Qt를 제거하고 새로 설치하여 Windows 8 업데이트에서 문제가 발생하는 경우 모든 설정이 다시 적용되도록하십시오. –

+0

같은 오류가 발생했습니다. –

답변

2

방금 ​​해결되었습니다.

아마도 Qt Creator의 버그 일 것입니다.

내 프로젝트에는 main.exe, core.dll, side.dll, external.dll이라는 4 개의 하위 프로젝트가 있습니다.

main.exe needs core.dll and side.dll 
core.dll needs external.dll 

main.exe는 core.dll과 side.dll 만 필요하므로 external.dll에 대한 참조를 추가하지 않았습니다. Qt Creator는 의존성을 탐지하고 적절하게 추가 할 수있을만큼 똑똑해야합니다 (물론, 결국 Linux에서 일어나는 일입니다).

종속성을 올바르게 감지하지 못하기 때문에 문제를 일으키는 Qt Creator에서 main.exe를 실행하려고하면 PATH 환경 변수가 올바르게 작성되지 않습니다.

내 main.pro 파일에 다음 행을 추가하여 그것을 해결 :

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../external/release/ -lexternal 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../external/debug/ -lexternal 

#INCLUDEPATH += $$PWD/../external 
win32: DEPENDPATH += $$PWD/../external 

참고 : 나는 더 나은 이해를위한 모듈 이름을 변경했습니다.

1

실행중인 환경의 경로에 Qt-DLL의 경로가 더 이상 포함되어 있지 않기 때문입니다. 프로젝트 설정으로 가서 "디버깅 및 실행"설정에서 PATH 변수를 확인하십시오. 내 경우 예 : C : \ QtSDK \ mingw \ bin; C : \ QtSDK \ Desktop \ Qt \ 4.8.1 \ mingw \ lib; .. 다른 경로 ...

안부.

+0

이미 확인했습니다. 경로는 정상입니다. Qt dll을 "empty dir"에 복사하지 않으면 응용 프로그램이 실행됩니다. –

0

문제는 확실히 일부 누락 된 dll (s)입니다! 나는 dll을 폴더 (예 : png3)에 직접 넣을 때 알아 냈습니다.dll) 실행 파일로 실행 한 다음 Qt 작성자에서 실행하면 실행됩니다! 내가 한 일 : 출력 디렉토리 (실행 파일이 거짓)에서 실행 파일 (더블 클릭)을 열 때, Windows는 누락 된 dll 이름을 보여줍니다. 폴더를 찾아 폴더로 직접 복사하십시오. 그런 다음 Qt 생성자에서 앱을 실행하십시오! dll이 적합한 경우 성공해야합니다. 그 후에는 exec 폴더에서 dll을 제거한 다음 Qt 작성자를 통해 오류가 다시 발생할 때까지 실행하십시오. 이렇게하면 누락 된 dll을 찾을 수 있습니다. 그 다음에 "path"변수에 "build environment"의 "projects"설정을 qt creator의 dll에 추가합니다.