Qt5静态生成收益无法加载平台插件“窗口”

我正在使用Visual Studio 2012在Windows上编写Qt应用程序。 使用Qt插件和一个定制的Qt 5.0.2 静态分发。 每当我运行应用程序时,我遇到了可怕的"Failed to load platform plugin windows"错误。 我已经将以下内容添加到链接器input中:

 imm32.lib winmm.lib Ws2_32.lib qtmaind.lib Qt5Cored.lib Qt5Guid.lib Qt5Widgetsd.lib 

起初我以为也许我应该添加“qwindowsd.lib”到这个列表中,但是这并没有解决问题。 为了使我的应用程序运行,我需要做些什么?

我解决了它。 感谢这一切,我能够得到一切工作。 我添加了以下库:

 opengl32.lib Qt5PlatformSupport.lib qwindows.lib 

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

 #include <QtPlugin> Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin); 

仅用于dynamic构build:确保将qwindows.dll移动到以下目录:

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

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

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

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

我的解决scheme是添加DLL libEGL.dlllibEGLd.dll

另一种方法是将qtbase/plugins/platforms目录复制到Debug / Release目录中,只保留qwindowsd.dllqwindows.dll

你也可以做一个环境variables:

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 (以节省磁盘空间!)。

GitHub和这里也提到了这个解决scheme。

编辑:对不起,这是不是有效的静态构build。 但我会在这里离开我

好吧,我有类似的问题。

我发现QT 5.2+有windeployq.exe

QT_DIRECTORY \ 5.2 \ BIN \ windeployq.exe

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

它会自动获取DLL,插件等。

我正是这个问题。 解决方法是检查Debug输出中的Qt。 该窗口告诉你所有加载的DLL。 这些是你的分发exe文件夹中可能需要的。