介绍
该项目是在VS2017+qt5.9.3的环境下实现的,因需要转移到其他电脑运行,故选择打包软件。
步骤如下
一、提取Qt的动态链接库
1、打开Qt自带的 windeployqt工具,如下(因为我VS用的编译器是MSVC2017,所以选择它)
2、编译前需要将所发布的exe文件放到一个单独的文件夹,比如我是放到F盘根目录下的Software文件夹中
3、使用命令cd 转到exe文件的路径
4.使用 windeployqt 工具命令:“windeployqt 文件名.exe”,回车键
5、检查Software文件夹中的内容
Qt动态链接库提取成功。但只是这样做不一定在其他电脑上运行,所以有接下来的步骤
二、检查缺少的DLL文件
1、打开vs2017目录下的“适用于vs2017的x64 本机工具命令提示符”
2、进入源工程所在目录(这次进入的目录为vs创建工程生成exe的目录);
使用命令:dumpbin /IMPORTS 文件名.exe>output.txt
比如我这里是将WeatherDisplay整个工程放到了桌面,所以路径也是桌面
运行以上命令之后,你会在工程路径下的release文件夹中看到output.txt文件
3、打开output.txt文件,查询除了Qt部分的其他dll。因为第一步已经将Qt的链接库提取出来了,不需要再次提取
4、 比如上面显示的是VCRUNTIME140.dll,然后我使用eyerything软件寻找VCRUNTIME140.dll文件
根据显示的位置,寻找VCRUNTIME140.dll,然后将它复制到所要打包的文件夹中,和之前的exe文件,Qt链接库放在一起
我这里选择的是在C:\Windows\System32中寻找DLL文件
三、最终的打包文件
疑难
项目若在Release模式和Debug模式下能够正常运行,但是单独点击项目生成目录下的release文件夹或者debug文件夹下的exe文件,出现以下错误,说明是缺少DLL文件,可以利用Depends.exe查询所缺DLL。
参考博文:https://www.cnblogs.com/doudou-1102/p/10266010.html
https://blog.csdn.net/su_unknown_world/article/details/82317637