基本工作
1 在工具中将发布版本改为release

2 构建项目
完成后,对应的exe文件就会被放在指定的文件夹下
实际上,还会有其他文件被放入,但只有其中的exe文件是有用的
3 加入缺失的dll文件
有人说用加入环境变量的方式解决这个问题,这样固然可以。但是要在另一台电脑运行时,那台电脑也必须安装qt并加入了环境变量,这样显然是不现实的。
-
cmd进入对应发行版本的文件夹,比如我用的是mingw打包,则是在
C:\Qt\Qt5.9.5\5.9.5\mingw53_32\bin目录下 -
使用其中的
windeploy.exe为发行的exe文件补充上缺失的dll文件
问题解决
理论上来说,这时候我们的exe文件应该可以正常运行了,但实际上在我的机器上并不行,不知道是因为qt版本原因还是其他原因。
首先,我们打开程序,还是会提示缺失libgcc_s_dw2-1.dll文件,补上后还会提示缺失libwinpthread-1.dll这个文件。
补充上对应的文件后,程序是依然不能运行的,还出现了更加诡异的错误:

Qt5Gui.dll Qt5Core.dll等有类似问题。
这是一个十分诡异的问题,首先问题并不出在Qt的几个库dll文件上。我看到网上有的人是加入环境变量后,Qt环境变量与codeblocks环境变量冲突,然而我并没有通过编辑环境变量的方式解决之前的dll依赖问题。那么这个问题是出在哪呢?
我先在Qt Creator中把程序运行了起来,再通过Proccess Explorer中查看它所依赖的dll文件,发现实际运行环境中用到了一个我们并没有拷贝的dll文件libstdc++-6.dll将这个文件复制过来后,就可以正常打开运行了
出现问题的几个dll文件似乎都是mingw的dll文件
windeployqt构建时似乎并不会自动加入mingw依赖的dll文件使用vs套件构建可能可以避免这个问题