VS2017+Qt5.9.3 程序打包发布

介绍

该项目是在VS2017+qt5.9.3的环境下实现的,因需要转移到其他电脑运行,故选择打包软件。

步骤如下

一、提取Qt的动态链接库

1、打开Qt自带的 windeployqt工具,如下(因为我VS用的编译器是MSVC2017,所以选择它)

VS2017+Qt5.9.3 程序打包发布

VS2017+Qt5.9.3 程序打包发布

2、编译前需要将所发布的exe文件放到一个单独的文件夹,比如我是放到F盘根目录下的Software文件夹中

VS2017+Qt5.9.3 程序打包发布

3、使用命令cd 转到exe文件的路径

 VS2017+Qt5.9.3 程序打包发布

4.使用 windeployqt 工具命令:“windeployqt 文件名.exe”,回车键

VS2017+Qt5.9.3 程序打包发布

VS2017+Qt5.9.3 程序打包发布

5、检查Software文件夹中的内容

VS2017+Qt5.9.3 程序打包发布

Qt动态链接库提取成功。但只是这样做不一定在其他电脑上运行,所以有接下来的步骤

二、检查缺少的DLL文件

1、打开vs2017目录下的“适用于vs2017的x64 本机工具命令提示符”

VS2017+Qt5.9.3 程序打包发布

VS2017+Qt5.9.3 程序打包发布

2、进入源工程所在目录(这次进入的目录为vs创建工程生成exe的目录);

使用命令:dumpbin /IMPORTS 文件名.exe>output.txt

VS2017+Qt5.9.3 程序打包发布

比如我这里是将WeatherDisplay整个工程放到了桌面,所以路径也是桌面
运行以上命令之后,你会在工程路径下的release文件夹中看到output.txt文件

VS2017+Qt5.9.3 程序打包发布

3、打开output.txt文件,查询除了Qt部分的其他dll。因为第一步已经将Qt的链接库提取出来了,不需要再次提取

VS2017+Qt5.9.3 程序打包发布

4、 比如上面显示的是VCRUNTIME140.dll,然后我使用eyerything软件寻找VCRUNTIME140.dll文件

VS2017+Qt5.9.3 程序打包发布

根据显示的位置,寻找VCRUNTIME140.dll,然后将它复制到所要打包的文件夹中,和之前的exe文件,Qt链接库放在一起
我这里选择的是在C:\Windows\System32中寻找DLL文件

三、最终的打包文件

VS2017+Qt5.9.3 程序打包发布

 

疑难

项目若在Release模式和Debug模式下能够正常运行,但是单独点击项目生成目录下的release文件夹或者debug文件夹下的exe文件,出现以下错误,说明是缺少DLL文件,可以利用Depends.exe查询所缺DLL。

VS2017+Qt5.9.3 程序打包发布

参考博文:https://www.cnblogs.com/doudou-1102/p/10266010.html
                  https://blog.csdn.net/su_unknown_world/article/details/82317637