32

最近,我们一直在将 Windows 上基于 QT 的应用程序从 QT 4.8 迁移到 QT 5,但我们遇到了部署问题。请注意,我们的应用程序没有改变,我们只是使用新的 QT5 框架构建它。经过一番努力,我们用基于 VS2010 的 QT5 库构建了它;我成功地从 Qt Creator 运行了该应用程序。

正如我们对 QT4 所做的那样,我们在安装程序中包含了一组必需的 QT 库。

在我们的测试阶段,当我们在干净的机器上安装我们的 QT5 应用程序时;它不会启动。应用程序不仅没有启动,而且没有输出任何错误。

我们通过依赖检查器运行应用程序;并且根本没有缺少库依赖项。

4

8 回答 8

37

经过几天的搜索没有任何进展,我们偶然发现了一个 QT 错误:

https://bugreports.qt.io/browse/QTBUG-28766

对于 QT5,除了预期的 QT 库之外,还有 msvcr100.dll 和 msvcp100.dll;事实证明,您必须通过以下方式发送您的应用程序:

platforms/qminimal.dll
platforms/qwindows.dll

也是。在您的本地 QT5 库 install @: \Qt5.0.0\5.0.0\msvc2010\plugins\platforms 中找到了我到处搜索的内容,但我无法在他们的文档中找到此信息。

于 2013-01-03T17:31:23.767 回答
15

让我运行独立的“Hello World”gui 应用程序(Qt sdk 5.0.1 mingw,Win7 x64)。我需要将下一个文件添加到程序目录:

  1. 平台/qwindows.dll
  2. D3DCompiler_43.dll
  3. icudt49.dll
  4. icuin49.dll
  5. icuuc49.dll
  6. libEGL.dll
  7. libgcc_s_sjlj-1.dll
  8. libGLESv2.dll
  9. libstdc++-6.dll
  10. libwinpthread-1.dll
  11. Qt5Core.dll
  12. Qt5Gui.dll
  13. Qt5Widgets.dll

qt 5.5 doc中提供的 windows 完整部署信息

于 2013-04-01T10:00:22.770 回答
7

更好的选择是使用:windeployqt.exe。此工具可解决您的 application.exe 的所有依赖项。

于 2015-06-30T23:33:35.617 回答
3

是的,很好看。我在使用 qt 5.0.2 时遇到了同样的部署问题。

同样在应用程序文件夹中安装了带有这两个 dll 的平台文件夹,现在可以在 vista 和 win7 上进行部署。

Dependency walker 在这里没有帮助,因为它不会将 qwindows.dll 或 qminimal.dll 通知为所需的 dll。

我的 Qt 安装中的平台 dll 位于 \Qt\5.0.2\mingw47_32\plugins\platforms。

于 2013-05-12T17:45:45.780 回答
2

Qt 平台 dll 位于“qtbase”的“plugins”文件夹中:C:\Qt\5.0.0\qtbase\plugins\platforms

于 2013-02-01T21:25:08.677 回答
2

记事本教程,win7 & qt5.1.1

部署步骤是:

* 将构建模式更改为发布,而不是调试,
* 建造,
* 在某处创建一个输出文件夹
    例如桌面/记事本/
*
* 复制文件到输出文件夹
    文件清单:
    * 来自“workspace_home/build-notepad-xxx-Release/release”
        *记事本.exe
    * 来自“qt_home/5.1.1/msvc2010/bin”
        * icudt51.dll
        * icuin51.dll
        * icuuc51.dll
        * libEGL.dll
        * libGLESv2.dll
        * Qt5Core.dll
        * Qt5Gui.dll
        * Qt5Widgets.dll
        *
    * 来自“qt_home/5.1.1/msvc2010/plugins/platforms”
        *platforms/(需要在输出文件夹中创建这个子文件夹)
            * qwindows.dll
        *
    *
*
* 运行 .exe 文件,确保它工作正常,
*
* 好的
*
于 2013-12-04T15:09:49.917 回答
1

与应用程序位于同一目录中的空qt.conf似乎导致在 Windows 7 上启动 Qt5 应用程序时出现问题。尝试将其删除。

于 2013-01-22T23:45:54.060 回答
1

我使用了 QMediaPlayer 和 QMediaPlaylist 的实例,但我的应用程序将不再启动,并出现以下错误:此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“windows”。重新安装应用程序可能会解决此问题。

在花了 4 天试图弄清楚发生了什么之后,我们发现 Qt5Core.dll 中有一个硬编码的路径来加载插件,尤其是文件wmfengine.dll. 确保你编译 Qt5Core 时没有这个硬编码路径 (:\Qt\5.5\msvc2010)。

WinDiff 的屏幕截图

插件加载Qt5Core.dll失败的硬编码路径wmfengine.dll

于 2016-08-03T22:31:05.023 回答