我们已经准备好了,你呢?

2024我们与您携手共赢,助您领跑移动端创新增长!

  当我们用Qt Creator开发编译完成一个程序后,通过点击Qt Creator界面左下角的“运行(Run)”按钮,能够正常运行程序。但当我们找到编译输出目录,想要双击exe文件直接运行程序时,会报丢失dll文件的系统错误[衰](如图1)。这是由于程序运行所需的各种动态库还没有被包含进去。程序的打包发布就是将程序运行所必需的动态库添加完整的过程。

  另外,在没有专门设置图标前,刚开发的程序(如图1中的例子samp1.exe)的图标是一个简单的命令行图标,显得不是很专业[捂脸],在程序发布之前最好替换成你想要的图标。

  图1. 直接运行的系统错误

  在本篇文章中,我们首先给程序设置一个图标。编译通过后,将程序运行所需的文件打包,以便你能把程序分享给别人或在其他电脑上运行。打包后的文件体积有些大,我研究了一种能精简体积的方法。

  一、设置程序图标

  设置图标的方法有多种,这里作为小白当然选择一种最简单的方法[呲牙]。

  首先准备一个ico图标文件。我在电脑上随便找了一个音乐形状的图标文件,将其复制到项目源文件目录中,并重命名为myico.ico,如图2所示。

  图2. 准备图标文件

  在Qt Creator中打开项目文件,在“Edit”界面下,双击打开项目文件“samp1.pro”。在文件末尾,添加一行“RC_ICONS = myico.ico”(注意等号前后各有一个空格)。

  图3. 编辑项目文件添加图标

  重新编译程序并运行。这时编译输出目录中samp1.exe的图标,以及程序运行界面左上角的图标,都已经替换为我们想要的图标了,如图4所示。

  图4. 添加图标后的结果

  二、打包发布程序

  为了打包发布程序,首先新建一个文件夹(这里我在Projects下新建了文件夹samp1_pack),然后将想要打包的samp1.exe文件复制到该文件夹中,如图5所示。

  图5. 准备打包目录

  由于我的程序是用MinGW 64bit编译器编译的,因此在开始菜单中找到对应版本的Qt命令行工具(不能使用windows自带的cmd),点击运行。在命令界面,首先切换当前目录到打包目录(我的是D:\Qt\Projects\samp1_pack),然后运行打包命令“windeployqt samp1.exe”。

  图6. 运行打包命令

  命令运行完成后,在资源管理器中打开打包目录,发现除了原来的samp1.exe外,多出了很多dll文件和子目录(除了translations外其余目录中也是dll)。这些多出的东西基本都是动态链接库。对于一个几乎什么也不干的程序,打包后的体积约66MB,确实是不小了[捂脸]。

  图7. 打包命令运行的结果

  三、精简体积

  Qt打包命令windeployqt比较全面的将动态库包含进来,但其实有些库是不需要的。想要精简打包文件夹的体积,必须要知道哪些文件是运行所必须的。

  在Windows系统中,可以通过一个免费小软件Dependency Walker分析一下动态库的关联性。官网地址为:

  打开Dependency Walker软件,点击左上角的“打开”按钮,找到我们打包的exe文件,然后点击“打开”按钮。注意这时不要进行任何操作,软件运行较慢(一动就显示未响应[捂脸]),耐心等待结束即可。

  图8. 操作Dependency Walker软件打开文件

  在得到分析结果后(如图9所示),我用红框标注出了在打包文件夹内存在的dll文件,这些都是运行必须的动态库。

  图9. 动态库依赖性分析结果

  将除了上面找到的dll文件以外其他的文件和文件夹全部删除,尝试运行程序,出现如图10所示的运行错误[衰]。注意到“Qt platform plugin”的提示,表明误删了Qt平台插件。于是将“platforms”文件夹恢复,之后程序终于能够正常运行了[抠鼻]。图11是精简之后最终保留的所有文件。

  图10. 缺失平台插件错误

精简软件开发流程规范(从零开始学Qt - 05:设置图标、打包发布以及精简体积的方法)

  图11. 精简后的结果

  精简之后打包文件夹的大小约30MB,约为原来的一半左右。将文件夹压缩(RAR,最好),大小为8.8M,已经在可以接受的范围了[捂脸]。

  图12. 精简后的文件大小

  总结一下,本文中我们主要学会了一种简单的设置程序图标的方法和使用windeployqt打包程序的方法。Qt打包的程序有些体积过大,因此基于Dependency Walker软件研究了精简体积的方法。

  限于小白我的水平有限(总感觉越来越难了[捂脸]),本文有任何不对之处或者有更好的方法,请大家多多关注评论[赞]。

  —————往期目录——————

  从零开始学Qt – 04:编写一个Hello World程序

  从零开始学Qt - 03:探索Qt的安装目录结构

  从零开始学Qt - 02. 手把手教你下载和安装Qt

  从零开始学Qt - 01. 为什么学Qt

  ————————————————

我们凭借多年的APP小程序开发经验,坚持以“个性定制 源码交付 独立部署 满意为止”为宗旨,累计为5000多家客户提供品质服务,得到了客户的一致好评。即刻开启你的小程序/APP,帮您轻松抢占千亿流量红利,助您轻松获客!
立即咨询: 13716188458 / 18588225959,助您抢占市场先机。项目经理在线

我们已经准备好了,你呢?

2024我们与您携手共赢,助您领跑移动端创新增长

售前咨询
咨询电话

13716188458

18588225959

在线留言
扫码加微信
微信
在线留言
* 请输入姓名
* 请输入有效联系方式
请输入您的需求:
* 请输入需求
提交成功