我正在使用 Visual Studio 2012 在Windows上编写Qt应用程序。
使用Qt加载项和 Qt 5.0.2 的自定义静态分发。
每当我运行应用程序时,我都会遇到可怕的"Failed to load platform plugin windows"
错误。
我已将以下内容添加到链接器输入中:
imm32.lib
winmm.lib
Ws2_32.lib
qtmaind.lib
Qt5Cored.lib
Qt5Guid.lib
Qt5Widgetsd.lib
起初我认为也许我应该将“qwindowsd.lib”添加到该列表中,但是这并没有解决问题。为了让我的应用程序运行,我需要做什么?
答案 0 :(得分:27)
仅限动态构建:确保将qwindows.dll移动到以下目录:
yourapp.exe
Qt5Core.dll
...
platforms/qwindows.dll
...
请注意,缺少plugins目录!您将QT_BASE /.../ plugins / *中所有需要的文件夹与二进制文件直接放在一起。 顺便说一句:我不需要libEGL.dll,但我的应用程序几乎没有GUI。
答案 1 :(得分:24)
我解决了。感谢this我能够让一切顺利。我添加了以下库:
opengl32.lib
Qt5PlatformSupport.lib
qwindows.lib
我还在我的代码中添加了以下内容:
#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);
答案 2 :(得分:12)
我对Qt的MinGW版本(非静态)有同样的错误:“无法加载平台插件窗口”。
我的解决方案是添加DLL libEGL.dll
和libEGLd.dll
。
答案 3 :(得分:7)
您还可以创建一个环境变量:
QT_QPA_PLATFORM_PLUGIN_PATH=<QT_BASE>\plugins\platforms
在我的情况下成为:
QT_QPA_PLATFORM_PLUGIN_PATH=f:\Qt\5\5.4\msvc2013_opengl\plugins\platforms
因此避免在开发期间安装/复制qwindows.dll
(以节省磁盘空间!?)。
答案 4 :(得分:6)
好的我有类似的问题。
我发现QT 5.2+有windeployq.exe
QT_DIRECTORY \ 5.2 ... \ BIN \ windeployq.exe
将它与项目目录(应用程序的.exe所在位置)一起使用。瞧!自动链接所有内容并准备部署!
它将自动获取DLL,插件等!
答案 5 :(得分:5)
另一种方法是将qtbase/plugins/platforms
目录复制到Debug / Release目录中,只留下qwindowsd.dll
或qwindows.dll
。
答案 6 :(得分:1)
解决方案是,如果你使用anaconda和python使用qt设计器制作gui,那么去anaconda,pkgs,qt.xxx,库,插件,然后将平台文件夹复制到包含你的程序的build文件夹。 exe文件
答案 7 :(得分:1)
从QT 5.9+开始 Qt5PlatformSupport.lib 不再可用,并且已split放入了不同的库中。 要在Windows下创建静态版本,需要链接以下其他库:
Qt5FontDatabaseSupport.lib
Qt5EventDispatcherSupport.lib
Qt5ThemeSupport.lib
Qt5PlatformCompositorSupport.lib
Qt5AccessibilitySupport.lib
Qt5WindowsUiAutomationSupport.lib
qwindows.lib
并加载Windows插件statically:
#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);
答案 8 :(得分:0)
我正是这个问题。解决方案是检查调试输出中的Qt。该窗口会告诉您加载的所有DLL。这些是您在分发exe文件夹中可能需要的那些。
答案 9 :(得分:0)
我在VS2015和Qt 5.9.3的版本中遇到了同样的错误
我通过将Qt5Cored.dll和Qt5Core.dll(我的应用程序的exe)替换为Qt目录中的相同DLL来解决错误