前言:QT程序打包输出exe还是比较简单的,三部曲
1、在release下进行EXE的输出,不能是debug模式下
2、输出后将 . exe文件单独拿出,建立一个文件夹,用 windeployqt 指令将文件所以依赖的动态链接库等文件拷贝进该文件夹 (有时候不一定都有,如果报错需后续手动添加)
3、使用Enigma Virtual Box, 软件下载地址,进行最终文件的压缩处理,将上述文件夹的所有文件封装至一个exe文件中
1、release模式下进行exe的输出
平时我们的调试都是在debug模式下进行的调试,但是当发布的时候需要在release模式下进行输出,然后我们将exe文件拷贝出来,单独放在一个空文夹中,接下来进行第二步。
2、windeployqt 指令拷贝依赖
这一步主要是将我们exe文件依赖的外部库都导过来,在 Windows 的 “所有程序” 中找到QT文件夹,下面有一个控制台格式的编译器:
打开编译器,转到你所在的文件夹(Windows上和Linux的 cd 命令稍微有些不一样,不可以直接cd 过去),例如:
cd /d xxxxxxxx(exe所在的 文件夹 路径),然后直接使用命令windeployqt xxxx.exe 就OK
结果成功
现在你的文件夹应该是这样的:里面除了原来的一个exe文件还有很多文件夹和动态链接库
3、最后使用 Enigma Virtual Box将该文件夹里面所有的东西打包成一个exe文件
选择输入输出文件,以及将该文件夹和使用到的动态链接库直接拖进下面的框里面,注意上面的QT5charts QT5core这几个动态链接库一定要单独放进去,不能处于某文件夹下面,会找不到的。 files options 选择 zip 压缩便可,然后直接 process 生成最后的exe文件。
结果:红线的就是我们最后是打包生成的新的exe文件
需要注意的几点:
1、将你所需要的文件,比如你在里面调用的 python脚本,或者图片也一起打包过来,(如有python脚本的话,如果打包的程序想在其他电脑上使用,那么那一台电脑必须有Python编译环境,否则脚本无法正常运行,因为脚本只是给QT提供了一个借口,编译工程时只能找到脚本调用接口,而无法处理脚本,脚本时单独存在的,就像上述的test_wyk2.py文件,只是被调用了,编译的时候无法处理这个单独的文件)
2、有可能会出现 This application failed to start because it could not find or load the Qt platform plugin “windows”.
Reinstalling the application may fix this problem 的 error,以为有的dll动态链接库没有放完全,这时候直接将QT下的platformswen文件直接也拖进去,就可以解决,或者直接将plugins文件夹拖到上面的框中也可以。