目录

前言

一、打包的原理

二、打包的方法

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,基本上解决了桌面客户端软件发布的后顾之忧,值得点赞!

windeployqt打包Qt应用程序相关推荐

  1. Linux环境打包Qt程序并部署到Docker容器

    Linux环境打包Qt程序并部署到Docker容器 根据项目需要,将UKylin版本的qt应用程序打包并且部署到docker容器中 系统版本 UKylin版本:Ubuntu18.04 Docker镜像 ...

  2. Windows下使用windeployqt打包QML项目(双击运行无反应)

    QWidgets 打包请转去Windows使用 windeployqt 打包 Qt/QWidgets 项目 使用 qml 构建 Qt 项目后,一直没有在 Windows 下打包发布过,原以为像是和 Q ...

  3. Qt/C++程序防拷贝及限制多次安装的一个简单案例

    前言 最近因项目需求:安装后的程序即使拷贝其他电脑也不使用,安装包只能在一台电脑安装,在此电脑安装后不能在其他电脑安装即使单独拷贝安装包也不能安装.另外就是不使用加密狗或者license key等,而 ...

  4. asp打开exe执行本地程序._基于QT应用程序打包成可执行程序exe

    [本文属原创,转载请附上原文出处链接.] 众所周知QT编译好的应用程序依赖很多动态链接库,不能方便的在其他PC上使用.这里介绍QT5版本的应用程序打包成可执行EXE的方法. 首先把QT应用程序项目编译 ...

  5. 关于windeployqt 打包程序诸多问题总结(经验之谈)

    正常操作:windeployqt打包链接,若成功直接点走,防止干扰你的操作:若仍然遇到问题则一一对照问题列表操作,还不能解决那就爱莫能助了,我已经把百度.gitee.贴吧翻来覆去的找一遍了,希望这些经 ...

  6. Window系统打包QT程序

    1.为什么打包 有时候我们编译出来的QT程序要给别人用,那么别人的电脑上可能没有安装QT,QT版本不同,或者其他因素的影响导致运行不了我们的程序,那么就需要打包给别人,把程序运行时候需要的一些库等资源 ...

  7. 命令行下打包Qt程序

    命令行下打包Qt程序 上一节我们说了 命令行下编译Qt程序 https://blog.csdn.net/weixin_42837024/article/details/81945656 现在基于上次继 ...

  8. Qt应用程序打包步骤(完美解决)

    Qt应用程序打包主要依赖的Qt内部集成的windeploqt.exe这个应用程序来完成的.它可以自动收集你的应用程序运行时必须的动态库.基于上文的简易版人工智能聊天程序,简述打包步骤如下: 1. 我们 ...

  9. linux下qt多个程序打包,解决Ubuntu下使用linuxdeployqt打包Qt程序问题

    写了点Qt界面程序,然而发现很难移植到其他没有安装Qt环境的电脑上运行.查资料了解到,在windows上有windowsdeployqt程序,linux上有linuxdeployqt可以帮助我们快速打 ...

最新文章

  1. html5父子页面数据传递,使用iframe标签嵌套页面时 如何进行父子页面通讯/传值...
  2. xib自动布局的时候,label高度计算误差问题
  3. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测
  4. 【IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (下篇)-ipfs + Ethereum 大图片存储
  5. 二十三、 爬取mzsock网站写真社区
  6. DCMTK:生成内置的数据字典
  7. Netflix:如何通过机器学习提高流媒体质量?
  8. 微课|《Python编程基础与案例集锦(中学版)》第2章(1)
  9. leetcode140. Word Break II
  10. 阿里云 磁盘脱机处理
  11. 如何建立个人创业的基石
  12. 【bzoj5001】搞事情 暴力
  13. 321. Create Maximum Number
  14. 单片机蜂鸣器音乐c语言程序,51单片机 使用蜂鸣器播放简单音乐
  15. 杭电ACM2030题
  16. pandas数据处理操作大全
  17. 核心交换机有什么用?如何选择?
  18. 解析李笑来新书《韭菜的自我修养》
  19. Ubuntu20.04微信安装 简单 使用方便
  20. 东北大学oj平台python答案_你觉得东北大学的Python考试怎么样?

热门文章

  1. 质量员培训建筑八大员培训公路工程施工质量监理的职责和作用
  2. jpa 删除是否成功_jpa delete无法删除 浅析JPA中EntityManager无法remove entity的问题 - 电脑故障 - 服务器之家...
  3. 官方教材信息系统项目管理师(第4版)
  4. subprocess 进程间通信
  5. hnu 数字电路 实验1.3 模型机指令译码器
  6. 用Visual Studio Code做PHP开发
  7. Prometheus个性化语法
  8. 喵的Unity游戏开发之路 - 对象持久化
  9. UML六种关系图示(过目不忘版)
  10. 【手把手】教你玩转SpringCloud Alibaba之Nacos