Qt程序打包成一个单独exe的方法

目录

Qt程序打包成一个单独exe的方法

程序发布

程序打包

问题


Qt程序打包成一个单独exe的方法

Qt程序发布及打包,同时修改可执行文件的图标。本教程使用Qt自带的 windeployqt 工具外加Enigma Virtual Box打包工具。首先需要知道的是,Qt程序发布需要的程序是用 Release 方式编译的。下面看一下具体的操作。

改变exe的图标
1、下载一个.ico格式的图标(如:exe_ico.ico),将exe_ico.ico复制到工程目录下。
2、工程目录下新建一个空白txt文档,文档内添加如下内容
IDI_ICON1 ICON DISCARDABLE "exe_ico.ico"
3、将文档后缀修改为.rc(如:exe_ico.rc)
4、在工程的pro文件添加如下内容
RC_FILE = exe_ico.rc
另注:使用VS+Qt的开发方式:在编辑器上的项目目录(Resource Files)添加exe_ico.rc文件即可。
5、重新编译程序,即可发现生成的程序图标变成了exe_ico.ico

程序发布

1、首先将Release方式生成的exe复制到一个单独的文件夹下,如E盘根文件下的demo文件夹内。
2、开始菜单找到Qt目录下的Qt 5.5 for Desktop (MinGW 4.9.2 32 bit)打开命令行;
3、命令行进入步骤1新建的demo目录内

进入demo文件夹
4、输入windeployqt 项目名.exe(如windeployqt QtTest.exe)

 这里写图片描述
5、进行到这,Qt程序所需要的库都添加完成。但是有一部分是用不到的,想删除的可以用程序依赖关系查看软件来查看哪些文件用不到,感兴趣的自己去百度吧。

或者 1、将Release方式生成的exe复制到一个单独的文件夹下,如D盘根文件下的D:\SW_DEV\QT\Release_exe_temp文件夹内。

2、打开命令行工具cmd,进入windeployqt.exe目录(C:\Qt\Qt5.11.3\5.11.3\mingw53_32\bin>windeployqt.exe),使用 windeployqt 对生成的exe 文件进行打配置动态库文件; 

3、C:\Qt\Qt5.11.3\5.11.3\mingw53_32\bin>windeployqt.exe D:\SW_DEV\QT\Release_exe_temp\MODBUS.exe

程序打包

安装Enigma virtual box工具(安装过程一直next就行)

Enigma virtual box官方链接:https://enigmaprotector.com/en/downloads.html

1、打开提前安装好的Enigma Virtual Box。具体操作如下:
这里写图片描述

 2、如上图
1)浏览打开demo下的Test.exe文件


2)点击增加,选择递归添加文件,选中demo文件夹点击确定


3)点击文件选项,选中压缩文件


4)点击执行封包。


3、将封包后的程序复制到其他地方,打开测试,结束。

问题

1. 之前打包很顺利,没有出现问题。这次换了一台电脑,就出现了问题:

打包完成后,程序无法运行,报错:

 百度了一会儿,有人说是因为:

使用enigmavb打包程序时,包含的根目录应该与待封包的主程序同级目录,不然会报错Cannot load library QT5Core.dll
同样的程序,下图右边不报错,左边报错

在这里插入图片描述

 我打包时不存在这个问题,还是会报错,所以不是这个原因;

最终确认是环境变量的问题:

因为安装QT时没有设置环境变量

开始-计算机-右键-属性-高级系统设置,高级选项卡-环境变量-系统变量

在系统变量里面找到Path,点击编辑,在弹出的对话框中点击新建,根据自己的QT安装位置,输入类似C:\Qt\Qt5.11.3\5.11.3\mingw53_32\bin,后一路点击确定即可。

设置完就可以运行了
 

2.  给到客户之后,反馈还是不行:

 ps:之前我一直是在开发的电脑上调试的,问题1就处在那个时候,电脑有安装QT软件;问题2现在是客户的电脑,是没装过QT软件的;所以问题是:

把 Enigma Virtual Box 打包过的 exe 放到另一个电脑使用,打开exe会报错:cannot load library Qt5Core.dll
(而实际上使用 Enigma Virtual Box 打包时,已经包含了 Qt5Core.dll 库)

查了一下,原因是:

解决方法

从 Qt5.12.0\5.12.0\mingw73_64\bin(版本不同目录不同) 目录下把这 libgcc_s_dw2-1.dll,libwinpthread.dll,libstdc++-6.dll 三个动态库拷贝过来,再使用Enigma Virtual Box 打包的exe就不会报错了。

修改前和修改后目录对比:

 重新打包之后,果然可以运行了

 这部分参考:https://javonpeng.blog.csdn.net/article/details/121926624?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121926624-blog-125670700.235%5Ev28%5Epc_relevant_t0_download&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121926624-blog-125670700.235%5Ev28%5Epc_relevant_t0_download&utm_relevant_index=2icon-default.png?t=N2N8https://javonpeng.blog.csdn.net/article/details/121926624?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121926624-blog-125670700.235%5Ev28%5Epc_relevant_t0_download&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121926624-blog-125670700.235%5Ev28%5Epc_relevant_t0_download&utm_relevant_index=2

您可以使用Enigma Virtual Box打包工具将Qt6程序打包可执行(exe)。首先,确保您已经使用Release方式编译了您的Qt6程序。然后,按照以下步骤进行操作: 1. 从Qt安装目录下的bin文件夹中复制libgcc_s_dw2-1.dll,libwinpthread.dll和libstdc-6.dll这三个动态库文件,并将它们粘贴到您的Qt6程序所在的文件夹中。 2. 下载并安装Enigma Virtual Box打包工具。 3. 在Enigma Virtual Box中,选择您的Qt6程序所在的文件夹作为源路径。 4. 设置输出路径和输出文件名。 5. 在打包选项中,选择需要包含的文件和文件夹。 6. 点击打包按钮,Enigma Virtual Box将会将您的Qt6程序和所需的依赖文件打包一个独立的可执行文件(exe)。 至此,您已经功将Qt6程序打包了可执行文件(exe)。请注意,如果您需要创建类似于安装程序的安装包,您可能需要使用到其他工具,如Inno Setup。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Qt程序打包一个单独exe方法](https://blog.csdn.net/childbor/article/details/125283893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [QT打包exe安装包](https://blog.csdn.net/weixin_47604497/article/details/127824369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤子001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值