使用QT5库部署的应用程序无法在Windows 7上启动

时间:2013-01-03 17:31:24

标签: qt qt5

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

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

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

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

8 个答案:

答案 0 :(得分:37)

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

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

使用QT5,除了预期的QT库,msvcr100.dll和msvcp100.dll;事实证明,您必须通过以下方式运送您的应用程序:

platforms/qminimal.dll
platforms/qwindows.dll

也是。您可以在本地QT5库中找到@:\ Qt5.0.0 \ 5.0.0 \ msvc2010 \ plugins \ platforms 我到处搜索,我无法在他们的文档中找到这些信息。

答案 1 :(得分: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
  14. qt 5.5 doc

    处可用的窗口的完整部署信息

答案 2 :(得分:6)

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

答案 3 :(得分:3)

是的,很好地发现了。我使用相同的部署问题 qt 5.0.2。

同样在应用程序中安装了具有这两个dll的平台文件夹 文件夹,以及vista和win7上的部署现在可以正常工作。

依赖步行者在这里没有帮助,因为它没有 根据需要通知qwindows.dll或qminimal.dll。

我的Qt安装中的平台dll位于 \ Qt的\ 5.0.2 \ mingw47_32 \插件\平台。

答案 4 :(得分:2)

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

答案 5 :(得分:2)

用于记事本教程,关于win7& qt5.1.1

部署步骤是:

* change build mode to release, not debug,
* build,
* create a output folder somewhere
    e.g. desktop/notepad/
* 
* copy file to output folder
    file list:
    * from "workspace_home/build-notepad-xxx-Release/release"
        * notepad.exe
    * from "qt_home/5.1.1/msvc2010/bin"
        * icudt51.dll
        * icuin51.dll
        * icuuc51.dll
        * libEGL.dll
        * libGLESv2.dll
        * Qt5Core.dll
        * Qt5Gui.dll
        * Qt5Widgets.dll
        * 
    * from "qt_home/5.1.1/msvc2010/plugins/platforms"
        * platforms/ (need to create this sub folder in the output folder)
            * qwindows.dll
        * 
    * 
* 
* run the .exe file, make sure it works,
* 
* ok
* 

答案 6 :(得分:1)

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

答案 7 :(得分:1)

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

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

screenshot of WinDiff

Qt5Core.dll中的硬编码路径导致插件wmfengine.dll无法加载