8

我一直在谷歌上寻找这个问题的解决方案,尽管我发现很多人分享我的问题,但他们的解决方案都不适合我。

我使用 Visual Studio 2010 使用 Qt 框架编写了一个 C++ 应用程序。我在 Visual Studio 的“发布”模式下构建并运行该应用程序没有问题,但是当我将该 exe 从发布文件夹复制到新目标时(假装它是一台新 PC ) 它无法运行,提供此错误:

---------------------------
TestApplication
---------------------------
This application failed to start because it could not find or load the Qt platform plugin "windows".

Available platform plugins are: windows.

Reinstalling the application may fix this problem.

在可执行目录中,我有以下文件结构:
./TestApplication.exe
./libGLESv2.dll
./Qt5Core.dll
./Qt5Gui.dll
./QtWidgets.dll
./platforms/qwindows.dll
./qt.conf

所有 dll 文件均取自库所在的 Qtbase 文件夹中的 Qt 5.0.0 版本。

qt.conf 文件是:

[Paths]
Plugins=.

没有它,启动错误是相同的,只是它说“最小”和“屏幕外”也是可用的平台。

对于遇到此错误的所有其他人,它似乎可以通过创建platforms文件夹并放入 qwindows.dll 来解决。但我自己这样做并不会改变任何行为。

是不是我做错了什么?也许我首先生成 .exe 的方法是错误的?

4

3 回答 3

9

如果您使用的是 libGLESv2.dll,那么您也必须包含 libEGL.dll。您在depends.exe 中看不到,不知道Qt 开发人员如何设法隐藏它。如果您的 Qt 是开箱即用的,那么即使您不使用 OpenGL,这两个 Dll 也是必需的。

此外,如果您的 Qt 是开箱即用的,您还需要包括三个 ic*.dll,其中包含用于 Unicode 处理的信息。

于 2013-08-22T10:25:19.770 回答
2

您可以通过查看在 Qt Creator 中运行调试 (F5) 时调用了哪些 DLL 来了解需要哪些 DLL。=卡尔

于 2013-09-20T13:57:54.957 回答
0

该版本可能缺少库/插件,或者库位于错误的目录和/或来自错误的目录。

Qt 预期答案:使用windeployqt

Qt 带有平台控制台应用程序,这些应用程序会将所有依赖项(包括 qwindows.dll 和 libEGL.dll 之类的依赖项)添加到已部署的可执行文件的文件夹中。这是部署应用程序的预期方式,因此您不会错过任何库(这是所有这些答案的主要问题)。Windows 的应用程序称为windeployqt。每个操作系统可能都有一个部署控制台应用程序。

于 2020-01-11T22:53:28.793 回答