windeployqt打包Qt应用程序

目录

前言

一、打包的原理

二、打包的方法

2.1 准备工作

2.2 启动打包程序

2.3 裁减文件

三、避坑

总结


前言

软件发布后在其它电脑上运行时,可能会由于库或资源的缺失而导致程序无法启动。打包是软件成功上线的一个重要环节。本文将介绍如何使用Qt自带的打包工具“windeployqt”来完成这一使命。

本示例程序运行的软硬件环境如下:

主机环境:Windows 11 家庭中文版

开发工具:QtCreator-5.14.2

编译工具:MinGW 7.3.0 64-bit

 

一、打包的原理

Qt Creator默认以动态链接的方式生成可执行文件,需要搭配动态链接库才能运行。windeployqt根据当前的环境变量(PATH配置)的搜索路径,去查找应用程序所需要的库和资源,将其拷贝到可执行文件的目录中。

二、打包的方法

2.1 准备工作

1、创建一个文件夹(例如:Release),用来存放Qt源码编译后生成可执行文件;

2、可执行文件(例如:hello.exe),放置到Release文件夹下;

2.2 启动打包程序

以管理员身份,开始菜单中打开Qt命令行终端界面。

在Qt终端界面输入命令,启动windeployqt来执行打包任务。

C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\windeployqt.exe C:\Users\lingd\Desktop\Release\hello.exe --qmldir C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\qml

  在“Release”目录下,生成了许多动态链接库文件和数据文件,启动hello.exe来测试打包工作是否成功完成。

2.3 裁减文件

打包后,在“Release”目录下生成可执行文件所需的全部库和数据文件,文件太大,可根据实际情况进行裁减,保留可执行文件必须依赖的文件就行了。

三、避坑

1号坑:应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。

分析:使用了系统自带命令行终端(C:\Windows\System32\cmd.exe)来执行windeployqt打包,导致库版本拷贝错误。

解决办法:使用Qt的命令行终端执行发布命令

2号坑:重新发布后,文件没有更新。

分析:发布到应用程序文件夹中的文件默认不会被覆盖。

解决办法:执行windeployqt命令时带“--force”参数,强制覆盖已存在的文件。

C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\windeployqt.exe C:\Users\lingd\Desktop\Release\hello.exe --force --qmldir C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\qml


总结

使用Qt自带的打包工具windeployqt,基本上解决了桌面客户端软件发布的后顾之忧,值得点赞!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值