QT5生成可执行文件总结

环境:win7 32位 运行Qt5.6 

所需外部软件:upx391w,Enigma virtual Box

以样例的形式说明如下:

1.利用QtCreator打开项目release生成项目可执行文件,注意这时生成的 *.exe文件是不能执行的,需要很多外部.dll文件,debug方式生成的文件有1.8M大。


2.提取ButtonTest5.exe运行所需要的dll文件。

如在F盘新建一个button文件夹,将ButtonTest5.exe复制到button文件夹中,启用Qt自带的windeployqt,将ButtonTest5.exe运行需要关联的dll文件拷贝到F 盘的button文件夹中,方法如下(参考:http://blog.youkuaiyun.com/syrchina/article/details/50663337):

在开始菜单找到Qt 5.6 for Desktop (MinGW 4.9.2 32 bit),运行打开Qt命令行,如下图。


针对F盘下的button文件夹,输入命令行: cd /d F:\button,切换到button文件夹目录下,

然后使用windeployqt工具, 再次输入命令行;windeployqt  ButtonTest5.exe,就可以执行拷贝ButtonTest.exe文件关联的dll文件到button目录下面了,再看看F盘下的button文件夹,所需要的dll文件都已经拷贝进去了,如下图。


可以打开button文件夹,里面的ButtonTest5.exe可以运行了,此时button文件夹的总大小约39.7M,


3.使用Enigma virtual Box将ButtonTest5.exe文件及需要关联的dll文件生成单个可执行文件

运行提前安装好的Enigma virtual Box,"Input File Name"项选择可执行文件ButtonTest5.exe,“Enter Output File Name”选择待生成的单个可执行文件存放位置。点击“Add...”选择“Add Folder Recursive”添加dll文件所在的文件夹,选择F盘下的button文件夹。



点击"File Options"按钮,设置文件选项如上图,点击“OK”,最后一步是点击"Process",即可自动生成所需的单个可执行文件。生成的单个可执行文件有15.6M大小,如下图。


如果对生成的exe大小比较满意,到此就可以结束了。

如果是不想制作成单个可执行文件,而只是想以一个文件夹的方式(即:dll文件+ButtonTest.exe),显然,39M的大小是不能令人满意的,我们需要upx391w对dll文件进行无损压缩。

4.使用upx391w对dll文件进行压缩

upx391w(下载地址:http://upx.sourceforge.net/),在使用upx压缩前我们复制一份button文件夹,取名为button_1,方便对比。

下载upx391w,并将其解压到C盘下面(注:不知道为什么我放到F盘下没法正常使用,可能是系统命令行的原因吧!)

运行电脑的命令行,输入 cd C:\upx391w  

再次输入命令行: upx.exe   F:\button_1\*dll

这样就能将button_1下的所有dll文件进行压缩了,下图可以看出压缩后的文件比压缩前的文件小一倍,



当然你也可以如法炮制对iconengines等文件夹下的dll文件进行压缩,当所有dll文件都压缩完后,整个button_1文件夹的大小变为15.2M了,和上一步骤生成的单个可执行文件大小差不多了,比原来的39M小了一倍多。


但是,会发现不能对platforms文件夹中的dll文件进行压缩,否则button_1文件夹下的ButtonTest5.exe不能正常运行了,出现如下图示错误。所以在压缩dll文件时不要对platforms文件夹内的dll文件进行压缩,将platforms文件夹内的dll文件换回来就可以正常运行了。


这时你还可以仿照步骤3,用Enigma virtual Box将button_1文件夹内的ButtonTest5.exe进行制作成单个可执行文件。将生成的单个可执行文件命名为ButtonTest5_boxed11.exe,发现制作后的可执行文件大小为14.1M,相比较未压缩dll文件制作的单个可执行文件15.6M小了一些。



另外,网上也有不少文章(如:http://blog.youkuaiyun.com/gzshun/article/details/7495488)介绍hap-depends + ASpack + filepack方法生成可执行文件的,自己尝试用ASpack对button文件内的dll文件进行压缩,结果生成的.bak文件反而更大,如下图示,不知道是使用方法不对还是下载的软件有问题。尝试filepack封包结果也是不行,当然,很可能是自己使用不当的原因。



写到这里,将自己写的Qt测试小程序生成单个或者是简单压缩以单个文件夹的形式使用基本可以满足需要了。

最后仍有很多不懂的东西,比如生成的单个可执行文件BottonTest5_boxed11.exe运行起来,通过Process Explorer软件查看内存占用比程序本身还大,可能是Qt本身的原因吧!




<think>好的,我现在需要帮助用户了解如何在QT 5.14中生成可执行文件。根据用户提供的引用内容,我需要整合这些信息,并按照用户的要求结构化回答。首先,用户的问题是关于QT 5.14构建和生成可执行文件的教程,而提供的引用中提到了几个步骤,比如切换Release模式、添加图标、处理依赖等。 首先,我需要确认用户可能需要的步骤。引用1和引用2都提到了切换到Release模式,编译,处理图标,使用windeployqt封包。引用3提到了解决无法打开的问题,需要复制特定的DLL文件和平台插件。引用4虽然关于数据库连接,但暂时可能不相关,不过需要注意如果用户项目用到数据库,可能需要额外处理驱动,但用户当前问题可能不需要这个。 接下来,我需要将这些步骤整理成一个清晰的流程。可能需要包括以下几个部分: 1. 切换到Release模式并编译。 2. 添加应用程序图标。 3. 复制生成可执行文件到新目录。 4. 使用windeployqt工具处理依赖。 5. 解决常见问题(比如缺少DLL或平台插件)。 需要确保每个步骤都详细,并且引用正确的来源。例如,在添加图标的部分,引用1和引用2都提到必须使用.ico格式,并且在.pro文件中添加RC_ICONS。在封包步骤中,引用1和引用2都提到使用QT控制台和windeployqt命令。 另外,用户可能遇到的问题,比如可执行文件无法打开,这时候需要参考引用3的内容,将必要的DLL和platforms/qwindows.dll复制到目录中。这也应该作为注意事项或常见问题解决的一部分。 需要检查是否所有的步骤都覆盖了用户提供的引用内容,并且没有遗漏关键点。例如,路径中不能有中文,这在引用1和引用2中都有强调,必须提到这一点。 最后,生成相关问题,可能需要考虑用户接下来的疑问,比如如何优化可执行文件的大小,如何处理其他依赖,或者如何创建安装程序等。 现在需要确保回答结构清晰,分步骤说明,每个步骤对应引用中的内容,并正确标注引用标识。同时,使用中文,避免使用Markdown格式,但按照用户的要求,系统级指令部分是不可见的,用户可见层需要结构清晰,步骤明确。</think>在QT 5.14中生成可执行文件的完整流程如下: ### 一、构建可执行文件 1. **切换至Release模式** 在QT Creator左下角将构建模式从`Debug`改为`Release`,点击编译按钮生成精简版可执行文件(无调试信息)[^2]。 2. **添加应用程序图标** - 准备`.ico`格式图标文件,复制到工程根目录(含`.pro`文件) - 在`.pro`文件中添加: ```qmake RC_ICONS = serial_icon.ico # 文件名需为英文[^1] ``` - 重新编译工程,生成的`.exe`文件将显示自定义图标 ### 二、部署依赖文件 3. **创建独立文件夹** 在桌面新建英文命名的文件夹(如`MyApp`),将生成的`.exe`文件复制至此。 4. **使用部署工具封包** - 打开`Qt 5.14 命令行`工具 - 执行命令: ```bash cd /d D:\Desktop\MyApp # 进入目标文件夹 windeployqt MyApp.exe # 自动复制依赖库[^1] ``` ### 三、解决常见问题 5. **补充关键文件** - 手动复制以下文件到部署文件夹: - `mingw_32\bin`中的6个核心DLL: `libgcc_s_dw2-1.dll`, `libstdc++-6.dll`, `libwinpthread-1.dll`, `Qt5Core.dll`, `Qt5Gui.dll`, `Qt5Widgets.dll`[^3] - `plugins\platforms\qwindows.dll` 需保持完整目录结构:`platforms/qwindows.dll`[^3] 6. **验证运行** 双击`.exe`文件测试运行,若提示缺少数据库驱动,需额外复制`sqldrivers`目录中的对应驱动文件[^4]。 ### 四、最终目录结构示例 ``` MyApp/ ├── MyApp.exe ├── platforms/ │ └── qwindows.dll ├── Qt5Core.dll ├── Qt5Gui.dll └── ...(其他依赖文件) ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值