当前位置: 首页 > 编程日记 > 正文

Qt 程序在 Windows 下的发布

「博客搬家」 原地址: CSDN 原发表时间: 2016-06-04

本文讨论在 Windows 平台下编译成功的 Qt 程序,如何在未配置 Qt 开发环境的 Windows 平台下独立运行的方法。

经过验证发现,在 Ubuntu 平台下编译成功的程序可在未安装 Qt 开发环境下的 Ubuntu16.04 中运行,所以,本文仅讨论,在 Windows 平台下编译成功的 Qt 程序,在未配置 Qt 开发环境的 Windows 平台下独立运行的方法。

1. 编译模式选择

如若想要发布程序,在 IDE 中编译一定要选择 release 而不是 debug,编译成 release 版本相比于 debug 版本,程序体积「可执行文件和 dll 文件」大大减小;

编译模式选择

2. 集成所需 dll 文件及其他依赖库

编译为 release 版本之后,找到生成的目录,其中只有 exe 扩展名的可执行文件是有用的。

编译生成目录

直接打开可执行文件,会提示找不到 dll 文件,解决方法如下:

2.1 使用 Qt 自带的 windeployqt.exe 寻找依赖文件

在 cmd 中,运行如下命令:

<Qt目录>\Qt5.5.1\5.5\mingw492_32\bin\windeployqt.exe   <*.exe>

程序会找到该可执行程序所需的所有依赖文件,并集成进该可执行文件所在的目录:

windeployqt 寻找依赖

有时程序会提示找不到所需的 gcc.exe,只需要将随 Qt 安装的 mingw 的 bin 目录添加到系统的环境变量中即可。之后执行可执行文件即可成功运行。

2.2 手动集成所需的依赖文件

这里,我们可以用 Process Explore 来获取所依赖的 dll 文件「Dependency Walker软件也是不错的选择」

打开 procexp.exe,选择菜单 -> View -> Lower Pane View ->DLLs 勾选此选项,显示 dll 窗口。

在 Qt Creater 中,调试运行要发布的程序,在 Process Explore 中,找到该 exe 文件并选中,在下面就看到依赖的 dll 了。

Process Explore寻找依赖

Process Explore寻找依赖

Dependency Walker寻找依赖

Dependency Walker寻找依赖

系统目录下的,一般不用关心,按 Path 排序,寻找 Qt 目录及 mingw 目录下的 dll 文件,将这些 dll 拷贝至发布程序目录下。

以 mingw 版 Qt 为例「VS版本安装目录有些许不同」,dll 文件在 Qt 安装目录下:

<Qt安装目录>\Qt5.5.1\5.5\mingw492_32\bin

找到所有所需的 dll 文件,复制到要发布程序的目录下

Qt运行目录

例如,本程序需要如下依赖:

该程序所需依赖

3. 打包为单个可执行文件

打包工具,这里选用 Enigma Virtual Box,运行软件,选择发布程序的可执行文件路径以及生成文件的路径,左下角的“添加”按钮添加所有的 dll 文件,不包含刚才选择的 exe 文件。点击右下角的「文件选项」,选中「启用文件虚拟化」以及「压缩文件」,如图所示:

Enigma Virtual Box的使用

最后点击右下角的“执行封包”,生成的 exe 文件的容量小了很多,并且这是一个纯粹的「绿色软件」,直接复制就能在任何存储介质上运行了。

4. Qt5 主要依赖链接库说明

4.1 Qt 模块库

  • Qt5Core.dll #QT核心库
  • Qt5Gui.dll #QT Gui库
  • Qt5Widgets.dll #QT Widgets库,QT 5中GUI程序基本都需要此dll
  • 还有其他程序用到的Qt5XXX.dll

4.2 ICU 依赖库「International Component for Unicode,Unicode工具」

  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll

4.3 Qt 插件库「新增库,路径必须正确」

根据不同的程序,需要不同的插件库。例如 QT_DIR/plugins/*/*.dll,需要将 platforms/*.dll , accessible/*.dll 的文件结构保留,放在你所编译的程序所在目录,例如:

plugins/platforms/qwindows.dll
plugins/accessible/qtaccessiblewidgets.dll

4.4 EGL 依赖库,为 OpenGL, OpenGLes 提供接口

  • libEGL.dll
  • libGLESv2.dll

4.5 mingw 依赖库「msvc 编译则无需这些库」

  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll
  • libwinpthread-1.dll

4.6 VC 运行库「mingw 编译则无需这些库」

  • msvcr110.dll「对应VS2012」
  • msvcp110.dll

5. 参考资料

  1. Qt 5.5 程序打包发布以及依赖
  2. Qt 在 Windows 上发布之所需运行库「一」
  3. 将 Qt 动态链接生成的 exe 及依赖 dll 打包方法
  4. Qt 5 编译 & 打包依赖 dll 发布

相关文章:

楷书书法规则_硬笔书法入门学习“三步法”,让练字不再难

生活中&#xff0c;常常有人肯于吃苦,坚持经常练习硬笔书法&#xff0c;但却进步不大&#xff0c;收获甚微。因此&#xff0c;凡有志学好硬笔书法的人&#xff0c;必须掌握一些学习硬笔书法的方法。硬笔书法学习的方法可以采用“三步法”。一、规范入门硬笔一般比较短小灵硬&am…

系统异常设计规范与原则

为什么80%的码农都做不了架构师&#xff1f;>>> 1.系统异常设计的出发点&#xff1a; 良好的异常信息展示&#xff0c;开发运维人员能快速定位问题。响应外部调用异常时&#xff0c;应能明确指明是内部异常还是调用条件不满足导至。响应用户操作异常时&#xff0c;…

陈长沙:学习者参考手册

学习者参考手册 组队学习的核心是“和一群有意思的人在一起学感兴趣的知识的过程&#xff0c;这个过程充满了人与人之间的交流互动&#xff0c;是融入社交属性和学习属性的过程”。作为参与组队学习活动的学习者&#xff0c;一定想了解有关该项活动的各种环节。于是&#xff0…

TC配置文件WCMD.INI详解,只能在ini重修改的配置

有*的项目扩展了功能&#xff0c;有★的项目是只能在INI中修改的配置。 ★Allowed 允许访问哪些驱动器&#xff08;\代表网络邻居&#xff09;。例如写为Allowedcde\&#xff0c;代表仅允许访问C、D、E和网络邻居&#xff0c;其余驱动器无法访问&#xff0c;也不会出现在驱动…

mapgis矢量化怎么打分数_mapgis矢量化的详细工作流程

感觉不错就麻烦评下分哦1、准备光栅文件&#xff0c;启动MAPGIS输入编辑子系统&#xff0c;新建工程、新建控制点、界址点、线层等项目文件&#xff0c;建立界址点文件和线层文件的属性结构&#xff1b;2、采集控制点&#xff0c;记录图幅左下角经纬度&#xff0c;保存项目、工…

AutoFac使用方法总结:Part I

utoFac是.net平台下的IOC容器产品&#xff0c;它可以管理类之间的复杂的依赖关系。在使用方面主要是register和resolve两类操作。 这篇文章用单元测试的形式列举了AutoFac的常用使用方法&#xff1a; 注册部分 使用RegisterType进行注册 [Fact]public void can_resolve_myclass…

canvas烟花锦集

canvas可以实现不同动画效果&#xff0c;本文主要记录几种不同节日烟花效果实现。 原文链接 实现一 效果地址 html <canvas id"canvas"></canvas>css body {background: #000;margin: 0; }canvas {cursor: crosshair;display: block; }js // when animat…

【青少年编程(第29周)】8月份的青少年编程组队学习结营了!

2021年09月05日&#xff08;周日&#xff09;晚20:00我们在青少年编程竞赛交流群开展了第二十九次直播活动。我们直播活动的主要内容如下&#xff1a; 首先&#xff0c;我们奖励了上周测试超过60分的小朋友。 其次&#xff0c;我们一起观看了电子学会等级测试流程的视频。 再…

led伏安特性实验误差分析_检测实验室误差分析知识汇编

2019-12-20 09:56:10 来源: 检测实验室误差分析知识汇编-检测家第一部分 误差理论简介在日常检测工作中&#xff0c;我们虽然有最好的检验方法、有检定合格的仪器设备、有满足检验要求的环境条件和熟悉检验工作的操作人员&#xff0c;但是&#xff0c;得到的检验结果却往往不可…

从Qcheck 1.3 不能在不同操作系统上运行问题(chro124、chro342)说开来------

【本文重在技巧学习&#xff0c;授人以鱼&#xff0c;不如授人以渔&#xff01;&#xff01;&#xff01;】 因为公司项目需要对带宽占用进行测试&#xff0c; 最近看电子工业出版社《网络管理工具使用详解》就qcheck 1.3 不能在不同的操作系统之间运行做一个总结。 本文以标题…

Spark笔试

1.Spark 的四大组件下面哪个不是 (D ) A.Spark Streaming B Mlib C Graphx D Spark R 2.下面哪个端口不是 spark 自带服务的端口 (C ) A.8080 B.4040 C.8090 D.18080 3.spark 1.4 版本的最大变化 (B ) A spark sql Release 版本 B 引入 Spark R C DataFrame D支持动态资源…

秦州:西瓜书 + 南瓜书 吃瓜系列 10. 集成学习(下)

Datawhale南瓜书是经典机器学习教材《机器学习》&#xff08;西瓜书&#xff09;的公式推导解析指南&#xff0c;旨在让在学习西瓜书的过程中&#xff0c;再也没有难推的公式&#xff0c;学好机器学习。 航路开辟者&#xff1a;谢文睿、秦州开源内容&#xff1a;https://githu…

iar定义arm版本_IAR Systems发布 IAR Embedded Workbench for ARM新版本

IAR Systems发布IAR Embedded Workbench for ARM嵌入式开发平台最新版本V5.41。相比于之前的版本&#xff0c;新版本软件在支持Cortex-M0上&#xff0c;将代码大小和执行速度这两个重要性能都提高了13%。本文引用地址&#xff1a;http://www.eepw.com.cn/article/106054.htmNXP…

UVA10110 Light, more light

链接地址。 分析&#xff1a; 如果n能被a整除&#xff0c;那么一定存在一个b使得a*b n。开关经两次变化相当于没有变化。那么只要看a b的那种特殊情况就OK了。 #include <stdio.h> #include <math.h> #include <stdlib.h>int main(){unsigned n, k;while(s…

【组队学习】【29期】Datawhale组队学习内容介绍

第29期 Datawhale 组队学习活动马上就要开始啦&#xff01; 本次组队学习的内容为&#xff1a; 编程实践&#xff08;数据可视化&#xff09;计算机视觉自然语言处理之情感分析吃瓜教程——西瓜书南瓜书李宏毅机器学习&#xff08;含深度学习&#xff09;动手学数据分析集成学…

json的简单的数据格式

json的简单数据格式 var arr{"obj1":["张三","12","女"],"obj2":["李四","12","女"],"obj3":["王五","12","女"],} var str""; $.each(a…

eplise怎么连接数据库_基于手机信令的大数据分析教程(一)数据导入数据库

前言该套教程以一个初学大数据的菜鸟视角&#xff0c;编写数据分析处理的整套流程。写得较为详(luo)细(suo)&#xff0c;希望适用于任何城乡规划大数据的初学者。持续更新中&#xff0c;若有错误&#xff0c;望指正&#xff01;1、任务总纲&#xff08;1&#xff09;职住数据导…

反序列化xml

我是.net 菜鸟。 今天学习一下反序列化xml&#xff0c;即将xml文件转换成程序更好识别的对象。 下面来看一个例子。这是一个xml文件。 <xml> <students> <student> <fields> <field value"name"><field> <field value"i…

【青少年编程】【三级】小鸡吃虫

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

Android拍照得到全尺寸图片并进行压缩/拍照或者图库选择 压缩后 图片 上传

http://www.jb51.net/article/77223.htm https://www.cnblogs.com/breeze1988/p/4019510.html

display会影响canvas吗_多动症会影响智商吗?

小智&#xff08;化名&#xff09;小的时候非常皮&#xff0c;上学了也不老实&#xff0c;学习成绩还很差&#xff0c;一直是倒数&#xff0c;还有人说他智商低。父母带他到医院检查&#xff0c;一切都正常&#xff0c;智商也没问题。直到最近他被检查出多动症&#xff0c;小智…

SQL Server 数据库清除日志的方法

方法一&#xff1a; 1、打开查询分析器&#xff0c;输入命令 BACKUP LOG database_name WITH NO_LOG 2、再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,…

Axure8.0 网页 or App 鼠标滚动效果

1、index 页下添加一个内联框架&#xff0c;设置好自己想要的尺寸。 2、右键点击该内联框架转换为动态面板&#xff0c;并取消勾选“自动调整为内容尺寸”。 3、双击 “内联框架”选择并双击“state1” 切换到“内联框架的state1”页面&#xff0c;将“内联框架”组件的滚动条设…

【组队学习】【29期】1. 编程实践(数据可视化)

1. 编程实践&#xff08;数据可视化&#xff09; 航路开辟者&#xff1a;杨剑砺、杨煜、耿远昊、李运佳、居凤霞领航员&#xff1a;范佳慧航海士&#xff1a;杨剑砺、伊雪、肖桐、李晴晴、蔡婧旎 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/fantastic…

训练不出结果_智能训练仪:专业化智能防控近视训练设备

视觉训练精准化&#xff0c;近视防控效果佳智能训练仪小百科 智能训练仪是一款近视防控全功能智能康复设备&#xff0c;一机集成十大视功能康复模块&#xff0c;针对各种视功能异常引发的儿童及青少年假…

贪心算法之最优装载

贪心算法通过一系列的选择来得到问题的解。它所做的每一个选择都是当前状态下局部最好选择。从许多的贪心算法求解的问题可以看到可用贪心算法求解的问题一般具有两个重要的性质&#xff1a;贪心选择性质和最优子结构性质。 1、贪心选择性质 贪心选择性质是 指所求问题的整体最…

百度认为什么样的网站更有抓取和收录价值

百度认为什么样的网站更有抓取和收录价值 百度认为什么样的网站更有抓取和收录价值呢?我们从下面几个方面简单介绍.鉴于技术保密以及网站运营的差异等其他原因&#xff0c;以下内容仅供站长参考&#xff0c;具体的收录策略包括但不仅限于所述内容。 第一方面&#xff1a;网站创…

【组队学习】【29期】2. 计算机视觉

2. 计算机视觉 航路开辟者&#xff1a;王程伟、任乔牧、张强、李芝翔领航员&#xff1a;杜蕊航海士&#xff1a;王程伟、任乔牧、张强、李芝翔 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/team-learning-cv/tree/master/ImageProcessingFundamentals内…

python 列表维度_如何输出python中list的维度

python中输出list的维度可以使用numpy来实现:import numpy as np a = [[1,2],[3,4]] print(np.array(a).shape) 扩展: reshape&resize&shape改变数组维度 reshape函数:不改变原数组维度,有返回值 resize函数:直接改变原数组维度,无返回值 shape属性:直接改变原数…

SWFTools PDF转换为SWF

前言 在iText 制作PDF这篇博文中只是简单的介绍了如何制作PDF&#xff0c;为了能让PDF在Web页面中显示&#xff0c;我还需要通过SWFTools工具将PDF文件转换为SWF文件&#xff0c;然后通过SWF文件显示在Web网页中&#xff0c;本次主要是实践SWFTools工具的简单使用&#xff0c;可…