问题
I am writing a Qt application on Windows using Visual Studio 2012.
Using the Qt Add-in and a custom built static distribution of Qt 5.0.2.
I am running into the dreaded "Failed to load platform plugin windows"
error whenever I run the application.
I have added the following to the linker input:
imm32.lib
winmm.lib
Ws2_32.lib
qtmaind.lib
Qt5Cored.lib
Qt5Guid.lib
Qt5Widgetsd.lib
At first I thought that maybe I should add "qwindowsd.lib" to that list as well however that did not fix the problem. What do I need to do in order to make my application run?
回答1:
For dynamic build only: Make sure you move the qwindows.dll to the following directory:
yourapp.exe
Qt5Core.dll
...
platforms/qwindows.dll
...
Note that the plugins directory is missing! You put all the needed folders from QT_BASE/.../plugins/* directly together with your binaries. BTW: I did not need libEGL.dll, but my application almost has no GUI.
My source: http://qt-project.org/forums/viewthread/27056/#122588
回答2:
I solved it. Thanks to this I was able to get everything to work. I added the following libraries:
opengl32.lib
Qt5PlatformSupport.lib
qwindows.lib
I also added the following to my code:
#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);
回答3:
I had the same error with MinGW version of Qt (not static): "Failed to load platform plugin windows".
The solution for me was to add the DLLs libEGL.dll
and libEGLd.dll
.
回答4:
You could also make an environment variable:
QT_QPA_PLATFORM_PLUGIN_PATH=<QT_BASE>\plugins\platforms
which in my case becomes:
QT_QPA_PLATFORM_PLUGIN_PATH=f:\Qt\5\5.4\msvc2013_opengl\plugins\platforms
Thus avoiding installing/copying qwindows.dll
during development (to save disk-space!?).
This solution was also mentioned on GitHub and here.
EDIT: Sorry, this is not effective in a static build. But I'll leave my A here.
回答5:
Ok I had similar issue.
I found out that QT 5.2+ has windeployq.exe
QT_DIRECTORY\5.2...\bin\windeployq.exe
Use it with the directory of your project (where the .exe of your application is). And voilà ! Automatically linked everything and ready to deploy !
It will get the DLLs, Plugins etc... automatically !
回答6:
An alternative is to copy the qtbase/plugins/platforms
directory into the Debug/Release directories leaving just qwindowsd.dll
or qwindows.dll
as appropriate.
回答7:
The solutions is,if you are using anaconda and python to make a gui using qt designer then go to anaconda,pkgs,qt.xxx,library,plugins ,then copy the platforms folder to your build folder wich contains your program.exe
回答8:
Starting with QT 5.9+ Qt5PlatformSupport.lib is no longer available and has been split into different libraries. To create a static build under windows one needs to link the following additional libraries:
Qt5FontDatabaseSupport.lib
Qt5EventDispatcherSupport.lib
Qt5ThemeSupport.lib
Qt5PlatformCompositorSupport.lib
Qt5AccessibilitySupport.lib
Qt5WindowsUiAutomationSupport.lib
qwindows.lib
and load the windows plugin statically:
#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);
回答9:
I exactly this probelm. The solution is to check the Qt in Debug output. That window tells you all the DLLs it loads. These are the ones you may need in your distribution exe folder.
回答10:
I had the same error with VS2015 and the version of Qt 5.9.3
I solved the error by replacing the Qt5Cored.dll and Qt5Core.dll(where the exe of my application) with the same DLLs in Qt directory
来源:https://stackoverflow.com/questions/16773789/qt5-static-build-yields-failed-to-load-platform-plugin-windows