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.dll
和libEGLd.dll
。
另一种方法是将qtbase/plugins/platforms
目录复制到Debug / Release目录中,只保留qwindowsd.dll
或qwindows.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文件夹中可能需要的。