2014-04-25 2 views
3

나는 필요한 모든 DLL을 QT에서 복사했으며 내 응용 프로그램은 Windows 서버 컴퓨터에서 정상적으로 작동합니다. 여기배포 후 QT 누락 된 QT

어떤 아이디어

This application failed to start because it could not find or load he Qt platform plugin "windows".

Reinstallning the application may fix this problem.

를 누락 무엇 :

그러나 때 다음과 같은 메시지가 윈도우 7 상자에 그것을 실행하려고?

+2

도구로 정보를 얻을 수 있습니다. 예를 들어 Dependency Walker (http://www.dependencywalker.com/)는 누락 된 구성 요소를 알려줍니다. 응용 프로그램이 링크되는 일부 Windows 런타임 라이브러리가 누락되었습니다. – vahancho

+0

아마 : #include #include ? – Alosyius

+0

이 페이지 확인 http://stackoverflow.com/questions/20495620/qt-5-1-1-application-failed-to-start-because-platform-plugin-windows-is-missi – DNamto

답변

3

나는 얼마 전에이 일로 머리를 긁었다. 이것은 qwindows.dll이 누락 된 것이 아니라 libEGL.dll 또는 libGLESv2.dll 중 하나가 누락 된 것으로 밝혀졌습니다. 의존성 워커 (dependency walker)는 libs를 직접적인 의존성으로 보이지 않기 때문에 까다 롭습니다.

dev 머신에서 테스트하고 싶다면 앱에 필요한 모든 libs가 있는지 여부에 관계없이 콘솔 디렉토리에 SET PATH=, cd 콘솔 문제를 실행하고 실행하십시오.

내 응용 프로그램에서 사용하는 전체 DLL 목록입니다 (Qt 5.2/QtQuick 앱만, 나머지는 C++). QtQuick 좋은하지만 Qt는 종속성의 크기는 무서운 약간입니다 :

icu*.dll을 - 당신이 libEGL.dll libGLESv2.dll Qt5Core.dll Qt5Gui.dll Qt5Network.dll Qt5Qml.dll Qt5Quick.dll Qt5Widgets.dll

1

널리 ICU 컴파일 한 여부에 따라 사용 된 솔루션은 응용 프로그램 폴더에 필요한 모든 라이브러리를 넣습니다.
응용 프로그램에 필요한 라이브러리는 무엇입니까?

The program can't start because <Library name> is missing from your computer. 
Try reinstalling the program to fix this problem 

라이브러리 세트가 Qt는 버전에서 의존한다 :
응용 프로그램 실행 및 오류 메시지가 표시됩니다. 여러 번 응용 프로그램을 실행하고 매번 필요한 lib를 복사하면 응용 프로그램에 필요한 것을 찾았습니다. 내 경우
(Qt는 5.2.1은) 당신의 Qt는 당신이 찾을 수

icudt51.dll, 
icuin51.dll, 
icuuc51.dll, 
libgcc_s_dw2-1.dll, 
libstdc++-6.dll, 
libwinpthread-1.dll, 
Qt5Core.dll, 
Qt5Gui.dll, 
Qt5Widgets.dll. 

모든 libs와 설치 폴더가 있습니다. 그러나 Tools\QtCreator 폴더의 라이브러리를 사용하지 마십시오. QtCreator에 이러한 라이브러리의 다른 버전이 있기 때문입니다!

오류의 경우 :
이 응용 프로그램이 찾거나 그 Qt는 플랫폼 플러그인 windows를로드 할 수 있기 때문에 시작하지 못했습니다 . 응용 프로그램을 다시 설치하면이 문제가 해결 될 수 있습니다.
platforms 폴더를 만들고 qwindows.dll을 복사해야합니다.
당신은 아직도 당신이 콘텐츠와 응용 프로그램의 폴더에 qt.conf 파일을 작성해야 오류가있어 경우

[Paths] 
Plugins=plugins 
이 솔루션은 최신 버전의 http://qt-project.org/doc/qt-5/qt-conf.html

에서 찾을 수 있습니다 qt.conf에 대해 https://qt-project.org/forums/viewthread/37265 상세 정보에 설명되어

Qt는 배포 도구 (5.2 이후)를 찾을 수 있습니다.이 도구는 응용 프로그램에 필요한 라이브러리를 찾고 응용 프로그램 폴더에 복사합니다. 다음과 같이 실행할 수 있습니다.

call c:\Qt\QtX.Y.Z\X.Y.Z\mingw48_32\bin\qtenv2.bat 
cd /d "c:\path\to\your\application\folder" 
windeployqt.exe your_application.exe 

일반적으로 잘 작동합니다. 하지만 일부 라이브러리는 복사되지 않는다는 것을 알았지 만 메소드를 통해 찾을 수 있습니다. 더 유용한 정보는 http://qt-project.org/doc/qt-5/windows-deployment.html

드물기는하지만 위의 오류 메시지에는 나타나지 않는 라이브러리가있는 경우이 오류가 발생할 수 있습니다. 예 : Qt 5.1.1: Application failed to start because platform plugin "windows" is missing
나는이 상황에 있지 않았기 때문에 더 이상 말할 수 없다.

+0

문제는 오류 메시지가 오해의 소지가 있다는 것입니다. 실제로 플랫폼 라이브러리에 대해 알려주는데, 실종 된 것은'libEGL.dll'입니다. –

+0

귀하의 경우 - 그렇습니다. 나의 연습에서 나는 그 이유에 직면하지 않았다. 또한 Alosyius는 "나는 /platforms/qwindows.dll이 누락되었습니다."라고 적었습니다. –