33

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

4

10 回答 10

31

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

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

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

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

于 2014-02-02T23:10:38.740 回答
29

我解决了。多亏了这一点,我才能让一切正常工作。我添加了以下库:

opengl32.lib
Qt5PlatformSupport.lib
qwindows.lib

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

#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);
于 2013-05-27T15:18:12.723 回答
13

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

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

于 2013-06-24T08:36:12.050 回答
9

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

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此处也提到了此解决方案。

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

于 2015-04-10T14:25:23.383 回答
6

好的,我有类似的问题。

我发现 QT 5.2+ 有 windeployq.exe

QT_DIRECTORY\5.2...\bin\windeployq.exe

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

它将自动获取 DLL、插件等...!

于 2015-12-01T15:27:36.913 回答
5

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

于 2013-06-28T13:05:51.683 回答
2

从 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);
于 2019-10-31T17:05:40.543 回答
1

解决方案是,如果您使用 anaconda 和 python 使用 qt 设计器制作 gui,然后转到 anaconda,pkgs,qt.xxx,library,plugins ,然后将平台文件夹复制到包含您的 program.exe 的构建文件夹

于 2018-04-15T14:23:37.247 回答
0

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

于 2013-10-08T13:36:43.777 回答
0

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

我通过在 Qt 目录中用相同的 DLL 替换 Qt5Cored.dll 和 Qt5Core.dll(我的应用程序的 exe)解决了这个错误

于 2018-05-09T13:47:01.680 回答