Qt5静态构建产量无法加载平台插件“windows”

时间:2013-05-27 12:59:59

标签: c++ windows visual-studio qt qt5

我正在使用 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”添加到该列表中,但是这并没有解决问题。为了让我的应用程序运行,我需要做什么?

10 个答案:

答案 0 :(得分:27)

仅限动态构建:确保将qwindows.dll移动到以下目录:

yourapp.exe
Qt5Core.dll
...
platforms/qwindows.dll
...

请注意,缺少plugins目录!您将QT_BASE /.../ plugins / *中所有需要的文件夹与二进制文件直接放在一起。 顺便说一句:我不需要libEGL.dll,但我的应用程序几乎没有GUI。

我的来源:http://qt-project.org/forums/viewthread/27056/#122588

答案 1 :(得分:24)

我解决了。感谢this我能够让一切顺利。我添加了以下库:

opengl32.lib
Qt5PlatformSupport.lib
qwindows.lib

我还在我的代码中添加了以下内容:

#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);

答案 2 :(得分:12)

我对Qt的MinGW版本(非静态)有同样的错误:“无法加载平台插件窗口”。

我的解决方案是添加DLL libEGL.dlllibEGLd.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(以节省磁盘空间!?)。

此解决方案还提到了on GitHubhere

编辑:抱歉,这在静态版本中无效。但我会把 A 留在这里。

答案 4 :(得分:6)

好的我有类似的问题。

我发现QT 5.2+有windeployq.exe

  

QT_DIRECTORY \ 5.2 ... \ BIN \ windeployq.exe

将它与项目目录(应用程序的.exe所在位置)一起使用。瞧!自动链接所有内容并准备部署!

它将自动获取DLL,插件等!

答案 5 :(得分:5)

另一种方法是将qtbase/plugins/platforms目录复制到Debug / Release目录中,只留下qwindowsd.dllqwindows.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来解决错误