转自:https://blog.csdn.net/ch_liu23/article/details/93602193
一、用QT自带工具整合相关dll
1.在release模式下编译工程生成exe文件
2.将该exe文件单独拿出拷贝到任意一个新建的文件夹,文件夹名随意
3.打开windows下的cmd或者shell,在当前窗口下执行打包命令:
QT自带的是一个查找整合相关dll的工具,同时还会将相关的dll拷贝到当前文件夹下,命令为windeployqt,但是由于qt安装目录下有几个这个名字的exe,所以要选对,本文基于vs2015下编译的,故而选择的是C:\Qt\5.12.3\msvc2015_64\bin\windeployqt.exe
命令执行的方式是:C:\Qt\5.12.3\msvc2015_64\bin\windeployqt.exe 你的执行文件名.exe
执行成功会如下图:
在该文件夹下就会生成相应的dll
二、用Dependency waker查找相关依赖的dll
Qt的工具只能找到qt相关的dll,有时候我们发布出去的话,对方电脑未必装了opencv或者vs2015,因此还有些dll需要手动拷贝到刚才的目录下。可以用Dependency waker来查找当前exe涉及哪些dll,Dependency waker官网下载地址,或者百度云链接: dependency waker百度云链接 提取码: 9mqe 。用该工具能够看到所有的相关的dll。我的是win10+vs2015,发布出去的时候,总结了下容易缺少这三个dll,concrt140.dll,msvcp140.dll,vcruntime140.dll,可以在这里下链接: 常缺失的dll百度云下载路径 提取码: m4v4。如果还缺少其他dll,推荐这个网站【https://cn.dll-files.com/】里面一搜就有,非常全
三、用Enigma Virtual Box将所有dll封装到exe文件中
其实到上一步已经发布一个压缩包给别人用了,如果你跟我一样有强迫症,觉得还是给别人一个exe直接可执行会爽一点,就做这一步。
先下载这个软件,链接: Eniga Virtual box百度云下载 提取码: z8vf 。
安装好后打开,输入exe文件,封包程序对应的会自动生成名字,任意改
然后点击下方的增加文件,这一步是需要把相关dll增加进去的,注意目录层级
点击执行封包就会自动生成,如下:
这样就生成一个exe文件,单独给出这个exe文件就可以给别人用了