项目场景:
使用VS和Qt开发完应用程序之后,需要拷贝到其他地方使用,通过windeployqt自动提取所需的文件。
问题描述:
生成的应用程序是64位Release版本,参照各种通过windeployqt自动提取所需文件的方法,提取出的文件却是Debug版本的dll
原因分析:
是系统环境变量配置导致。
我的电脑上安装了Qt的三个编译器:
但是在系统环境变量中,mingw53_32编译器的bin路径在msvc2013_64编译器的前面:
因此在命令行使用的windeployqt实际是mingw53_32的bin目录下的windeployqt.exe,与exe的版本不匹配,从而导致文件复制出错。
解决方案:
-
方法1:将需要使用的编译器对应的bin目录放到系统环境变量的最前面,比如我需要使用msvc2013_64的编译器,需要将路径:D:\QT\5.9\msvc2013_64\bin放到最前面:
-
方法2:在命令提示符人为进入windeployqt所在路径,比如我需要使用msvc2013_64的编译器,需要先进入D:\QT\5.9\msvc2013_64\bin,再执行windeployqt命令:
如果上述两种方法都不行,可以在命令后面加上“–release”,强制生成release的依赖库
windeployqt xxxxx/xxx.exe --release