【问题标题】:Deploying Qt C++ Application from Visual Studio qwindows.dll error从 Visual Studio qwindows.dll 部署 Qt C++ 应用程序错误
【发布时间】:2013-08-24 11:57:00
【问题描述】:

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

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

---------------------------
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=.

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

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

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

【问题讨论】:

  • 您是否按照deployment中的所有步骤进行操作?
  • 使用windeployQt

标签: qt


【解决方案1】:

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

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

【讨论】:

  • 添加该 DLL 修复了错误消息“此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“windows””。
【解决方案2】:

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

【讨论】:

  • 有趣,我正在使用 Visual Studio 插件进行开发,但下次遇到依赖问题时会考虑这个选项。
【解决方案3】:

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

Qt 预期答案:使用windeployqt

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2016-03-02
    • 2016-06-03
    • 1970-01-01
    • 2017-08-06
    • 2018-06-18
    相关资源
    最近更新 更多