从Visual Studio qwindows.dll错误部署Qt C ++应用程序

时间:2013-08-21 22:34:30

标签: qt

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

我使用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文件都取自Qt的5.0.0版本,该文件夹位于库所在的Qtbase文件夹中。

qt.conf文件是:

[Paths]
Plugins=.

没有它,启动错误是相同的,除了它说“minimal”和“offscreen”也是可用的平台。

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

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

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:2)

通过查看在Qt Creator中运行Debug(F5)时调用的DLL,可以看到需要哪些DLL。 =卡尔

答案 2 :(得分:0)

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

Qt预期答案:使用windeployqt

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