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

Qt5 Static Build yields Failed to load platform plugin "windows"

本文关键字:加载 平台 插件 windows 静态 构建 Qt5      更新时间:2023-10-16

我正在使用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"也在该列表中,但是这并没有解决问题。我需要做什么才能使我的应用程序运行?

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

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

注意,plugins目录不见了!你把所有需要的文件夹从QT_BASE/…/plugins/*直接和你的二进制文件一起。顺便说一句:我不需要libgl .dll,但我的应用程序几乎没有GUI。

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

我解决了。多亏了这个,我才能让所有的东西都工作起来。我添加了以下库:

opengl32.lib
Qt5PlatformSupport.lib
qwindows.lib

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

#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);

我有同样的错误与MinGW版本的Qt(非静态):"未能加载平台插件窗口"。

我的解决方案是添加dll libEGL.dlllibEGLd.dll

您也可以创建一个环境变量:

QT_QPA_PLATFORM_PLUGIN_PATH=<QT_BASE>pluginsplatforms

在我的例子中变成:QT_QPA_PLATFORM_PLUGIN_PATH=f:Qt55.4msvc2013_openglpluginsplatforms

从而避免在开发期间安装/复制qwindows.dll(以节省磁盘空间!?)

这个解决方案也在GitHub和这里提到过。

编辑:对不起,这在静态构建中无效。但是我将把A留在这里。

我也遇到过类似的问题。

我发现QT 5.2+有windeployq.exe

QT_DIRECTORY 5.2 bin windeployq.exe…

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

它将获得dll,插件等…自动!

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

从QT 5.9+ Qt5PlatformSupport开始。Lib 不再可用,并且被分割成不同的库。要在windows下创建静态构建,需要链接以下附加库:

Qt5FontDatabaseSupport.lib
Qt5EventDispatcherSupport.lib
Qt5ThemeSupport.lib
Qt5PlatformCompositorSupport.lib
Qt5AccessibilitySupport.lib
Qt5WindowsUiAutomationSupport.lib
qwindows.lib

并静态加载Windows插件:

#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);

解决方案是,如果你正在使用anaconda和python使用qt设计器制作gui,然后去anaconda,pkgs,qt。然后将平台文件夹复制到包含program.exe

的构建文件夹中。

我正是这个问题。解决方案是在调试输出中检查Qt。该窗口告诉您它加载的所有dll。这些都是你可能需要在你的分发exe文件夹。

我在VS2015和Qt 5.9.3版本中有同样的错误

我通过将Qt5Core.dll和Qt5Core.dll(其中我的应用程序的exe)替换为Qt目录

中的相同dll来解决错误