Window系统打包QT程序

article/2025/9/29 3:37:12

1、为什么打包

有时候我们编译出来的QT程序要给别人用,那么别人的电脑上可能没有安装QT,QT版本不同,或者其他因素的影响导致运行不了我们的程序,那么就需要打包给别人,把程序运行时候需要的一些库等资源都打包在一起,这样就不需要考虑别人运行环境,因为所有的资源都打包提供了!

举例:

我这边随意编译一个QT程序,就简单的一个图像界面,编译出来的名字叫 NDDS.exe,我单独把这个程序拷贝到 NDDS_package下,运行是不成功的,因为找不到运行时需要的动态库

2、解决方案

  • 使用 windows qt 自带的 windeployqt工具进行打包
  • 使用 qt cmd 运行打开,因为有时候你并没有把路径添加到环境变量中去,编译器版本要看你使用的是什么,我这边是 MinGW7.3.0 64-bit的编译器
  • 我这边的 windeployqt工具 路径在 D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin 下,可以把你自己的这个路径添加到环境变量中去,这样可以在任意目录下使用 windeployqt

 查看 windeployqt 路径

D:\Work\Workspace\QT\NDDS_package>where windeployqt
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\windeployqt.exe

 windeployqt 工具打包

D:\Qt\Qt5.14.2\5.14.2\mingw73_64>cd D:\Work\Workspace\QT\NDDS_packageD:\Work\Workspace\QT\NDDS_package>windeployqt  NDDS.exe
D:\Work\Workspace\QT\NDDS_package\NDDS.exe 64 bit, release executable
Adding Qt5Svg for qsvgicon.dll
Skipping plugin qtvirtualkeyboardplugin.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_hangul.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_openwnn.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_pinyin.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_tcime.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_thai.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Direct dependencies: Qt5Core Qt5Gui Qt5SerialPort Qt5Widgets
All dependencies   : Qt5Core Qt5Gui Qt5SerialPort Qt5Widgets
To be deployed     : Qt5Core Qt5Gui Qt5SerialPort Qt5Svg Qt5Widgets
Updating Qt5Core.dll.
Updating Qt5Gui.dll.
Updating Qt5SerialPort.dll.
Updating Qt5Svg.dll.
Updating Qt5Widgets.dll.
Updating libGLESv2.dll.
Updating libEGL.dll.
Updating D3Dcompiler_47.dll.
Updating opengl32sw.dll.
Updating libgcc_s_seh-1.dll.
Updating libstdc++-6.dll.
Updating libwinpthread-1.dll.
Creating directory D:/Work/Workspace/QT/NDDS_package/iconengines.
Updating qsvgicon.dll.
Creating directory D:/Work/Workspace/QT/NDDS_package/imageformats.
Updating qgif.dll.
Updating qicns.dll.
Updating qico.dll.
Updating qjpeg.dll.
Updating qsvg.dll.
Updating qtga.dll.
Updating qtiff.dll.
Updating qwbmp.dll.
Updating qwebp.dll.
Creating directory D:/Work/Workspace/QT/NDDS_package/platforms.
Updating qwindows.dll.
Creating directory D:/Work/Workspace/QT/NDDS_package/styles.
Updating qwindowsvistastyle.dll.
Creating D:\Work\Workspace\QT\NDDS_package\translations...
Creating qt_ar.qm...
Creating qt_bg.qm...
Creating qt_ca.qm...
Creating qt_cs.qm...
Creating qt_da.qm...
Creating qt_de.qm...
Creating qt_en.qm...
Creating qt_es.qm...
Creating qt_fi.qm...
Creating qt_fr.qm...
Creating qt_gd.qm...
Creating qt_he.qm...
Creating qt_hu.qm...
Creating qt_it.qm...
Creating qt_ja.qm...
Creating qt_ko.qm...
Creating qt_lv.qm...
Creating qt_pl.qm...
Creating qt_ru.qm...
Creating qt_sk.qm...
Creating qt_uk.qm...
Creating qt_zh_TW.qm...

 这样打包后就把程序需要的动态库资源都拷贝过来了,可以直接运行 NDDS.exe 这个程序了

关于这个打包里面的东西其实有一些并没有用的上,比如 translations 语言翻译等其实不需要,还有一些动态库也没用上,但是我不建议去删除,如果非要删除可以自行分析下,如win10系统下资源监视器去看一个进程关联了哪些模块 (cmd 中输入 resmon.exe 可以直接打开),linux 系统下可以 ldd+程序名 查看

建议不删除,然后把这个目录压缩打包给别人就行了

 3、打包成安装包

安装包就像你平时下载安装的程序,选择安装到哪个目录下,是否创建桌面快捷方式等,两个工具,一个是 NIS Edit,一个是Inno Setup,以 Inno Setup举例:

Inno Setup 官网:https://jrsoftware.org/isdl.php 

1)、下载 innosetup-6.2.0.exe 工具安装,安装后打开工具如下图

2)、使用 innosetup 打包

  • 参考下面一系列的图

 

 

 

 

 

 

 

 

 

 

 

 

上面步骤操作完后,跳到下面界面编译,如果有错误会提示,上面我特意把ico图标格式没选对

 

 那为了演示,删除错误这行,然后再次运行

 

 编译完成后桌面上就有了打包好的安装程序,这个程序和大家平时下载的exe安装程序一样


http://chatgpt.dhexx.cn/article/finuyOaO.shtml

相关文章

hangul2010(韩国办公软件) v8.0.0.466官方版

hangul2010 是一款韩文办公软件,由韩国软件公司hansoft开发的一款软件,由于其办公的实用性,软件界面的友好性,使得该软件在韩国非常出名,用户量也非常广。当然,也不是说只有韩国人才用的到该软件&#xff…

如何查看sql的执行计划

文章目录 如何使用plsql查看sql的执行计划?使用navicat返回内容解释idselect_typetabletypepossible_keyskeykey_lenrefrowsextra 如何使用plsql查看sql的执行计划? explain plan for (select * from table) 可查看该语句的sql执…

Mysql查看执行计划

使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。 explain执行计划包含的信息 其中最重要的字段为:id、type、key、rows、Extra 各字段详解 id select查询…

Oracle查看执行计划

查看执行计划,分析慢查询SQL 在MySql中可以使用EXPLAIN关键字来查看执行计划并分析sql的执行情况,而在Oracle数据库中则需要两条sql来查看执行计划 EXPLAIN PLAN FOR SELECT * FROM user where username zhangsan; SELECT * FROM TABLE(dbms_xplan.d…

一文搞定 SQL Server 执行计划

导读 数据开发过程中,开发完成的 SQL 发布到生产环境,经常会发生 SQL 执行慢甚至根本无法执行,如何避免这种情况呢?这一篇我们分析一下 SQL Server 的执行计划是如何生成及如何阅读评估执行计划。 基本概念 在此之前&#xff0c…

spark学习之执行计划explain

🐼今天我们来学习阅读spark的执行计划,在学习执行计划之前,我们需要了解spark中的代码是如何执行的,学习代码的执行过程有助于我们加深对spark的理解,对往期内容感兴趣的同学可以查看👇: hadoop专题: hado…

详解mysql执行计划

在数据库查询的时候,我们通常会使用sql语句去查询自己所需要的数据。但是,关于sql在数据库中是如何执行的,它有没有使用索引,具体使用了哪些索引,查找了哪些字段和表,他们的顺序是怎样的,分别用…

Spark执行计划分析与研究

在学习、使用和研究spark的过程中,逐渐会发现:单纯看官方文档对spark参数调优只能解决一小部分的问题,要想进一步的学习spark,进一步调优甚至在spark源码的基础上二次开发,我觉得收益最高的应该是学习执行计划了。 因…

impala 执行计划详解

Impala是一个MPPMassivelyParallelProcessing计算引擎,简单来说就是将计算压力分到多个节点,得到结果后汇总,然后再返回给客户端。如果你留意过Impala的执行计划,会观察到exchange节点,该节点的作用就是分散计算压力的…

sqlserver 执行计划

一个很好的手册分享,执行计划里的属性解释官方文档:https://docs.microsoft.com/zh-cn/sql/relational-databases/showplan-logical-and-physical-operators-reference?viewsql-server-2017 想复杂的事情简单说,在看执行计划的其他文章的时…

MySQL执行计划

什么是执行计划 The set of operations T that the optimizer o chooses to perform the most efficient query t is called the “query execution plan”, also known as theEXPLAIN plan 如何获取SQL语句的执行计划 方法1: explain SQL 。方法2: …

sql 执行计划

一、各数据库执行计划执行方式 二、explan 三种格式 (以MySQL为例) 1.默认格式 2.tree 格式(与postgreSQL执行计划格式相似) 3.json格式 三、执行计划各字段名含义 1) id:查询编号 ,从小到大,编号越大执行顺序越往前 相同的话从上往下执行(也可以把编号当成缩进的格数…

mysql的执行计划_MySQL——执行计划

项目开发中,性能是我们比较关注的问题,特别是数据库的性能;作为一个开发,经常和SQL语句打交道,想要写出合格的SQL语句,我们需要了解SQL语句在数据库中是如何扫描表、如何使用索引的; MySQL提供explain/desc命令输出执行计划,我们通过执行计划优化SQL语句。 下面我们以M…

Oracle查询执行计划

执行计划(Execution Plan)也叫查询计划(Query Plan),它是数据库执行SQL语句的具体步骤和过程。SQL查询语句的执行计划主要包括: ● 访问表的方式。数据库通过索引或全表扫描等方式访问表中的数据。 ● 多表…

oracle执行计划耗费 基数 字节,Oracle 查看执行计划

一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二:怎样查看Oracle执行计划? 这里以PLSQL为例: ①:配置执行计划需要显示的项: 工具 —> 首选项 —> 窗口类型 —> 计划窗口 —> 根据需要配置要显示在执行计…

执行计划绑定方法

执行计划突变属于每个数据库系统不可避免页难以预防的难题,处理执行计划突变带来的性能问题也是每个DBA应该具备的技能。除了开发时针对不同范围的结果集使用不同的sql,DBA可以通过查看索引状态、消除索引碎片、表重新分析,还可以使用执行计划…

PostgreSQL执行计划

简介 PostgreSQL是“世界上最先进的开源关系型数据库”。因为出现较晚,所以客户人群基数较MySQL少,但是发展势头很猛,最大优势是完全开源。 MySQL是“世界上最流行的开源关系型数据库”。当前客户基数大,随着被Oracle收购&#…

一文带你了解SQL的执行计划(explain)

一. 什么是SQL执行计划 为什么关注sql的执行计划,因为一个sql的执行计划可以告诉我们很多关于如何优化sql的信息 。 通过一个sql计划,如何访问中的数据 (是使用全表扫描还是索引查找?) 一个表中可能存在多个表中不同的…

执行计划

一、什么是执行计划(explain plan) 执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。 二、如何查看执行计划 1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。 很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信…

matlab画图基本命令

一、本文主要内容和相关参考博客 参考了xticklabel和xtick在matlab里的区别 和 label ‘ytick’的设置这两个网址。matlab在画图时会自动调整坐标轴间隔的大小,但是我们可以使用如set(gca,ytick,ylabel_pos,yticklabel,ylabel_str)的函数来实现自己调整间隔以画出…