Qt的程序如何打包详细教学

ops/2025/1/3 3:31:06/

生成Release版的程序

在打包Qt程序时,我们需要将发布程序需要切换为Release版本(Debug为调试版本),编译器会对生成的Release版可执行程序进行优化,使生成的可执行程序会更小。

debug版本

debug版本是一种开发过程中的构建,主要用于调试和开发。其主要特点包括:

  • 包含调试信息:debug版本包含了许多调试信息和工具,如符号表、行号和代码的其他元数据,这些都有助于开发者在调试时更容易地追踪代码执行。
  • 自动初始化变量:在debug版本中,未初始化的变量可能会被自动初始化,以防止使用未定义的值。这对于调试过程非常有利,开发者能够更容易地追踪潜在问题。
  • 优化级别低:为了更便于调试,debug版本通常针对可读性进行优化,而不是性能。因此,它可能比release版本慢。
  • 功能完整:debug版本保留了所有功能,包括开发过程中用来测试的功能。

debug版本主要用于开发阶段,方便开发人员进行测试和调试。然而,它不适合最终用户使用,因为性能较低且可能包含未经过测试的代码。

release版本

release版本是最终产品的构建,旨在提供给用户或客户使用。其主要特点包括:

  • 去除调试信息:release版本通常去除了所有调试信息,以减小文件大小并提高性能。
  • 不自动初始化变量:在release版本中,编译器通常不会自动初始化未使用的变量,这有助于提高性能。
  • 高优化级别:release版本经过编译器优化,以提高代码的执行速度和效率。这可能包括内联函数、循环展开等优化技术。
  • 功能精简:某些调试用的功能可能在release版本中被禁用,以提升安全性和性能。

release版本是经过测试的稳定版本,适合向用户发布和生产环境使用。

profile版本

profile版本是一种介于debug和release之间的构建类型,旨在兼顾性能和调试。其主要特点包括:

  • 文件大小适中:profile版本编译后的可执行文件比debug版本小很多,但比release版本大一点。
  • 包含部分调试信息:profile版本带有部分调试符号信息,这使得开发者在需要时能够进行一定的调试。
  • 性能更优:由于进行了部分优化,profile版本的性能通常比debug版本更优,但可能略逊于release版本。

profile版本适用于那些需要在开发过程中进行一定调试,但又希望获得比debug版本更好性能的场景。

打包

构建完当前项目后,找到生成的带Release后缀的构建目录。最后再进入release文件夹找到exe文件单独复制到一个新建文件夹里面

打开cmd控制台,cd进入该路径

再输入windeployqt Pix.exe(后面输入你自己的程序名称) ,完成后文件夹下会自动添加许多文件

下载打包工具:Software Protection, Software Licensing, Software Virtualization 

下载完后选择中文更易操作

 

 

第一:选择exe文件

第二:选择打包好后文件的名称和存放路径

第三:把除exe外的文件拖入到Virtual Box Files树内

第四:点击执行封包

运气好的话就已经可以发给其他人运行了!

运行exe报错cannot load library Qt5Core.dll

把打包过的exe发给另一个电脑使用,打开exe会报错:cannot load library Qt5Core.dll
(实际上使用 Enigma Virtual Box 打包时已经包含了 Qt5Core.dll 这个库),但是自己电脑上运行确不会报错

Qt5Core.dll 作为 Qt 框架的核心组件,依赖于多个其他的动态链接库(DLL)才能正常运行,其中包括 libgcc_s_dw2-1.dlllibwinpthread.dll 和 libstdc++-6.dll

我们在Qt目录下找到这三个文件放到Virtual Box Files树内再执行封包


http://www.ppmy.cn/ops/131651.html

相关文章

AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和工作学习方法 AJ-Report是一个基于Java的开源报表工具,它集成了ECharts、Ant Design Vue等前端技术,致力于为企业提供一站式的数据可视化解决方案…

Docker打包自己项目推到Docker hub仓库(windows10)

一、启用Hyper-V和容器特性 1.应用和功能 2.点击程序和功能 3.启用或关闭Windows功能 4.开启Hyper-V 和 容器特性 记得重启生效!!! 二、安装WSL2:写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/143057041 三…

Unity 写转盘

简单思路就是&#xff0c;每个圆形在前一个扇形的基础上&#xff0c;进行一个旋转&#xff0c;然后设置自己的fillCount float allWeight 0;var angle 360f / element.Count;float angle 0;int index 0;foreach (var item in element){var obj GameObject.Instantiate<…

<项目代码>YOLOv8 煤矸石识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

【人工智能】Transformers之Pipeline(二十二):零样本文本分类(zero-shot-classification)

​​​​​​​ 目录 一、引言 二、零样本文本分类&#xff08;zero-shot-classification&#xff09; 2.1 概述 2.2 Facebook/bart-large-mnli 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.3.3 pipeline返回参数 ​​​​​​​​…

002-Kotlin界面开发之Kotlin旋风之旅

Kotlin旋风之旅 Compose Desktop中哪些Kotlin知识是必须的&#xff1f; 在学习Compose Desktop中&#xff0c;以下Kotlin知识是必须的&#xff1a; 基础语法&#xff1a;包括变量声明、数据类型、条件语句、循环等。面向对象编程&#xff1a;类与对象、继承、接口、抽象类等。…

Spark中给读取到的数据 的列 重命名的几种方式!

目录 一、第一种 (withColumnRenamed) 二、第二种&#xff08;toDF&#xff09; 三、第三种&#xff08; toDF(*tuple1) &#xff09; 四、 第四种(schema) 五、假如文件里自带有列名的情况&#xff08;option&#xff09; 一、第一种 (withColumnRenamed) 假设要把如下…

[QUIC] QUIC Frames

PADDING PADDING Frame {Type (i) = 0x00, }这个帧用于增加 QUIC 包的大小。 对于 Initial 包, 可以用它来增加包大小以达到要求的最小包的大小限制。 填充 QUIC 包以对抗流量分析。 这个帧的大小为1字节,表明自己是一个 PADDING 帧。 PING PING Frame {Type (i) = 0x01, …