用QT生成exe之后,想要脱离QT单独运行的话,需要用到各种dll,虽然QT提供dll一键生成的工具,如下图所示:
但是在使用MSVC编译器之后,发现QT的一键生成工具不可靠,尤其是使用64位的情况,经常把32位的dll导入到64位中,进而导致无法打开exe。而且还出现编译的电脑能打开,换了台电脑就打不开了,这些都是由于关键dll文件缺失。
通过查询了资料,可以借助 depends.exe 和 任务管理器 来完善dll。(depends.exe是开源软件,自行上网查询)
首先,使用QT提供dll一键生成的工具,导出关键dll。
其次,我们通过QT生成exe之后,使用 depends.exe 打开:
打开之后需要等待一会儿,他在判断依赖关系。
成功打开后如图:
警告和错误,以及带黄色问号的dll都可以先不用管,我们先查看其他dll的依赖关系。但这里要注意,也有可能是缺少某个关键的带黄色问号的dll。
将滚轮拖拽到中间左右,就可以看到现有依赖的dll,如图:
这里就要注意CPU这栏,上图中的exe是64位的,所以dll需要x64,如果参杂了x86就需要进行替换。
depends.exe用来查询QT导出的dll版本是否正确,如果不正确就到QT的安装路径下的编译器文件复制相应的文件出来。
最后,打开QT生成的exe,并打开任务管理器,找到资源监视器,如下图:
在cpu这栏,勾选QT生成的exe,查看关联的模块。
到对应的路径中复制依赖的dll出来。
注意:只需要复制关键的dll即可,不用每个dll都复制。