windeployqt打包QT5程序提示缺少*.dll文件的问题|附Qt程序使用Enigma打包exe流程
问题
使用windeployqt打包QT5程序报错如上
注意找到你的QT安装目录的windeployqt.exe所在的路径打开命令行【可以使用文件资源管理器找到路径,然后在路径框输入cmd就会直接在当前路径下打开cmd】
我的路径是D:\Software\Qt5.12.0\5.12.0\mingw73_64\bin
,仅供参考
看了很多博文都是直接使用windeployqt 需要打包的exe文件路径\xx.exe
我之前按照教程打包成功了但今天用同一篇教程打包失败了,发现这次打包出来的"*.dll"文件名称最后多了个d,而之前打包成功的程序目录并没有这种情况,甚至于把现在的exe文件拖到之前成功的文件夹里可以运行。
最后问了ai说打包命令需要加上--release
,居然真的解决了。即
windeployqt --release 需要打包的文件路径\xx.exe
ds
这样文件目录里打包的dll文件名称是没有d的。而且二者打包过程明显能看出不同
不加release:
加release:
ds给出的原因
而为什么在Qt里选择了release构建还是会出现调试版exe程序,问了ds说是可能跟项目配置有关,最终发现是因为我之前为了调试在qt工程的.pro文件里加了一些库,注释掉以下调试相关的内容不加上--release
也可以正常打包运行了。
完整打包流程
参考博客:https://blog.csdn.net/qq_40309666/article/details/121701963
和该博文的过程一样,只是在windeployqt时加上--release
确保打包的dll文件正常
首先使用QtCreator编译【release】
在工程目录的realse文件夹内找到exe文件,运行的时候其实也会给出exe所在路径
可以将该exe复制到自己新建的任意路径的空文件夹,也可以直接使用该路径
我是新建了一个文件夹,路径是E:\Qt_Workspace\Qt_test\packtest
,将要打包的com.exe
文件复制过来,其他文件不管
参考本文开头方法,找到自己qt安装路径的windeployqt路径,在命令行使用命令打包
D:\Software\Qt5.12.0\5.12.0\mingw73_64\bin>windeployqt.exe --release E:\Qt_Workspace\Qt_test\packtest\com.exe
这样在路径E:\Qt_Workspace\Qt_test\packtest
下该com.exe
程序可直接运行
如果需要打包成一整个不需要任何其他文件的exe,则需要使用软件Enigma Virtual Box
选择封包主程序路径就是windeployqt打包的路径
封包程序另存为路径就自己随便选
然后左下角【文件】 -> 【增加文件夹(递归)】,路径选择windeployqt打包路径,也就是主程序所在路径。
文件选项选择压缩文件会更小
点击右下角【执行封包】,等待进度完成。
运行没问题的话就结束了。