QT/QML 程序release之后,用官方的打包工具“windeployqt.exe”导入依赖后,运行程序,程序没有界面,但是已经在后台运行。

这种情况一般是缺少某些依赖导致的,windeployqt.exe不是非常智能,尤其是处理qml依赖的时候,因此需要自己手工查找缺失的依赖,复制到程序所在目录。

下面介绍一下QT尤其是包含了qml的程序的打包步骤。

  • 操作系统:Win 10 64bit
  • 开发环境:QT Creator 4.2.1 (Community)
  • QT版本:Qt 5.8.0

1、获取release程序

在release模式下,运行程序,然后从release目录下获取可执行程序,如test.exe,复制到独立的文件夹下

2、用windeployqt.exe获取依赖

执行 $PATH\Qt5.8.0\5.8\mingw53_32\bin目录下的windeployqt.exe,导入依赖(…代表对应程序所在真实路径)

$PATH\windeployqt.exe --qmldir $PATH\Qt5.8.0\5.8\mingw53_32\qml $PATH\test.exe

windeployqt会将大部分依赖导入进来,但是很可能有所缺失。

3、debug模式下查看程序依赖

在QT Creator中,用debug模式可以查看程序运行过程中所加载的模块,因此可以在release下,用debug查看依赖,与现有的文件对比,从qt安装目录下复制缺失的依赖到可执行文件路径即可。

4、关于依赖问题的几点说明

  • 可执行程序所在目录与qml、plugins目录在同一级别,因此需要qml、plugins目录下模块的时候,直接复制到可执行程序所在目录即可,当然要保持原有的子文件夹结构。
  • 复制qml模块的dll需要将该模块下的qmldir文件一起复制过去,不然依然找不到对应的模块。

参考:http://www.qtcn.org/bbs/read-htm-tid-55046.html

最后更新: 2019年04月19日 21:37

原始链接: http://andersjing.com/2017/05/11/2017-05-11-qt_release/

× 请打赏~
打赏二维码