Qt5 在win7上发布 & 打包依赖dll生成exe方法

win7平台下QT软件的打包与发布(部署与安装) 软件编写调试好之后最重要的就是打包和发布,这样软件才好传播。 qt软件的打包发布一个难点是必备dll文件的识别。不少日志说用dependencyWalker,今天我试了一下发现查找dll不完全,比如辨识不了qwindows.dll(会报错could not find or load the qt platform plugin windows)。并且还要自己手动添加不是很方便。一番查找后 阅读详情

转自:http://www.stardrad.com/blog/qt-5%E7%A8%8B%E5%BA%8F%E5%9C%A8windows%E4%B8%8A%E7%9A%84%E5%8F%91%E5%B8%83/

http://blog.163.com/qimo601@126/blog/static/1582209320132291718389/


最近做了个qt的程序,但是发布程序比较困难,因为qt5有着比较多的dll,如下两篇详述了qt dll依赖库,以及如何查询自己工程所用的dll及打包发布的方法。


QT 5的依赖链接库变得更多了,摸索许久,又查阅了一些资料,总结出以下QT 5程序所依赖的库。

一、依赖库一览

1.QT模块库
1
2
3
4
Qt5Core.dll      #QT核心库
Qt5Gui.dll       #QT Gui库
Qt5Widgets.dll   #QT Widgets库,QT 5中GUI程序基本都需要此dll
#还有其他程序用到的Qt5XXX.dll
2.ICU(International Component for Unicode,Unicode工具)依赖库
1
2
3
icudt49.dll     
icuin49.dll    
icuuc49.dll   
3.QT插件库,Qt新增,有点坑爹,路径必须正确
1
2
3
4
5
6
# 根据不同的程序,需要不同的插件库
#例如 QT_DIR/plugins/*/*.dll
# 需要将 platforms/*.dll,accessible/*.dll的文件结构保留
# 放在你所编译的程序所在目录
plugins/platforms/qwindows.dll
plugins/accessible/qtaccessiblewidgets.dll
4.EGL依赖库,为OpenGL,OpenGL es提供接口
1
2
libEGL.dll
libGLESv2.dll
5.mingw依赖库(msvc编译则无需这些库)
1
2
3
libgcc_s_sjlj-1.dll
libstdc++-6.dll
libwinpthread-1.dll
6.VC运行库(mingw编译则无需这些库)
1
2
msvcr110.dll(对应VS2012)
msvcp110.dll

二、文件结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--platforms
        --qwindows.dll
        --*.dll
--accessible
        --qtaccessiblewidgets.dll
        --*.dll
--(other plugin folder)
        --*.dll
--yourApp.exe
--Qt5Core.dll
--Qt5Gui.dll     
--Qt5Widgets.dll
--icudt49.dll     
--icuin49.dll    
--icuuc49.dll
--libEGL.dll
--libGLESv2.dll
--libgcc_s_sjlj-1.dll(mingw)
--libstdc++-6.dll(mingw)
--libwinpthread-1.dll(mingw)
--msvcr110.dll(msvc)
--msvcp110.dll(msvc)

三、总结

说实话,QT 5虽然有了ICU,Open GL的支持,还有c++11的支持,但是由于依赖的DLL实在是太多,着实有点不太方便。一个mingw编译的qt gui程序,光是依赖dll就有30-50M的依赖库,确实很不爽啊。不过7z压缩后有10M左右,还可以接受



Qt静态编译链接生成的exe文件,不需依赖七大姑八大姨的一堆dll,可以独立运行,发布很方便。但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制。那有没有办法即能享受静态编译的方便,又不受开源许可的限制呢?方法之一,就是用动态编译,然后把exe和需要的dll整合成一个文件,问题就解决了。
具体步骤:
一,先动态编译链接,生成exe文件
二,找到依赖的dll文件
       这里,我们可以用Process Explore来获取所依赖的dll文件
      下载:
       http://pan.baidu.com/share/link?shareid=419262&uk=2701984065
       打开procexp.exe,通过菜单View==》Lower Pane View==》DLLs  勾选,显示dll窗口

        这里,我们以test.exe为例,
        在Qt环境下,将exe运行起来,在ProcessExplor中,找到就可以找到test.exe,选中,在下面就看到依赖的dll了。

       系统目录下的,一般不用关心,按Path排序,看Qt目录及mingw目录下的,将这些dll拷贝出来,单独放到一个目录下。
三,打包
       打包工具,这里选用Enigma Virtual Box,
       下载:
        http://pan.baidu.com/share/link?shareid=419263&uk=2701984065
       安装,运行

       Enter Input File Name中,选择exe
       Enter Output File Name,输出文件名称
       点Add按钮,将前面准备好的dll文件,添加进来
       点Files Options,勾选Enable Files Virtualization和Compress files,OK
       最后,点Process,大告成。

Qt项目发布打包教程(win10) Qt打包项目步骤(win10) 一、Qt程序发布release Qt软件软件运行有debug和release模式,debug模式包含调试信息,日常写项目、调试BUG都是在debug模式下,这对开发者而言很友好,但是随之而来的是占用较大的内存,具有较慢的运行的速度,不适合非开发人员使用。release模式下只进行项目本身要求功能的编译运行,不能调试,但使用内存小、运行速度快 发布release需要将构建配置选为release 构建运行测试无误后,找到程序文件下的release文件夹,拷贝.exe文件至另外的 阅读详情

相关推荐

Qt 联合Visual Studio编译打包发布

1、qt 查找项目中使用到的qt动态链接库; 步骤如下 ①打开项目使用的windeployqt工具(qt自带的工具); ②进入到文件夹所在目录;使用 cd 命令 ③使用命令:windeployqt Name.exe(在目标文件夹所在目录下执行该命令) 但是由于我的QT使用的是MSVC编译器,会用到一些VC的库,使用qt的命令行时会提示我 warning:Cannot find Visual Studio installation directory,VCINSTALLDIR..

qq_41975868的博客 7305

Qt制作dll(带ui)并调用,兼容32位和64位

qt制作dll,调用dll,界面做成dll,兼容32位和64位,解决版本交叉问题。有完整的.pro文件源码和详细文件目录组成结构。

大橘子的博客 7101

Qt发布可执行程序(Qt Widgets Application)

1)以Release 方式编译生成 exe 程序:    生成的程序运行正常之后,找到项目的生成目录,比如 项目源码路径:C:\QtPros\hellomw\ 。    它的项目生成目录是 C:\QtPros\build-hellomw-Desktop_Qt_5_4_0_MinGW_32bit-Release\ 。    进入这个文件夹,在进入它的子文件夹 release 里面,找到 hello...

zhaol_90的博客 3028

ubuntu14.10+QT4编写ARM9(mini2440)应用的配置与安装

笔记本:ubuntu14.10(32位) ARM9开发板:mini2440(友善之臂提供的Superboot2440、zImage_T35、rootfs_qtopia_qt4镜像文件,通过minitools烧写进开发板) 交叉编译:arm-linux-gcc-4.4.3 开发所需工具:minicom、u盘

Github: lianghuiyong 2707

QT生成DLL库文件的方法和使用方法详解和实例源代码

概括来说, 要把Qt程序做成dll,刚开始可以像做一般应用程序一样实现你程序的所有功能,然后再做一个接口就OK了。 这里说的是(我这儿用的是Qt4.7.0):一个实现加法功能函数封装在Dll文件中 1.用Qt 生成一个项目 不要ui(也可以要)。 2.把pro文件里面的app改成lib,这样之后就能生成Dll文件了。 3、具体实现方法在我的实例里面有。

qt5core.dll

qt5core.dll 1、32位直接复制到C:\Windows\SYSTEM32下,然后点击开始-运行-输入regsvr32 qt5core.dll,即可解决问题。   2、64位复制文件到c:\Windows\SysWOW64,开始-程序-附件-命令提示符,右键点击,管理员身份运行。键入:regsvr32 c:\Windows\SysWOW64\qt5core.dll即可。

Qt 打包发布程序,解决找不到msvcp140.dll等动态库问题正确方案

三种解决方案,解决Qt程序打开缺少VC运行环境,找不到vcruntime动态库的问题。

L-Super的博客 1万+

手把手教你用X-AnyLabeling实现医学图像标注:从SAM模型选择到多边形优化全流程

本文详细介绍了如何使用X-AnyLabeling平台结合Med-SAM等专业模型实现医学图像的高效标注。从环境配置、模型部署到实战工作流,涵盖智能辅助标注、低对比度解决方案及团队协作方案,帮助医疗从业者大幅提升标注效率与质量。特别适合处理CT/MRI等医学影像的复杂标注需求。

weixin_29251131的博客 456

Qt5.3 在Win7,Win8下发布打包依赖dll生成exe方法

以前在网上看到Qt生成的release版的exe文件,要在其他没有安装Qt的电脑上运行,

str999_cn的专栏 3806

gephi生成网络关系图_路网拓扑重建专题 (3) 网络图生成

城市道路网建模在获得基础路网之后,需要考虑道路交通网络的描述与表达问题。网络是将现实世界中的事物及其关系进行适当的抽象,构造成由节点和边按照一定规则组成的形式。一个实体网络可以由有限个“节点”集合与“边”集合构成的图表示,即网络表示为。对于一个由个节点组成的无权复杂网络,该图有邻接矩阵,这里。根据研究对象不同,建模方法主要包括原始法[1]和对偶法[2]两种,见图1,字母a-j为交叉口编号...

weixin_39761195的博客 3504

RK3588视频转码实战:如何用FFmpeg+MPP实现16路1080P硬解压(附完整命令)

本文详细介绍了如何在RK3588处理器上使用FFmpeg和MPP框架实现16路1080P视频的硬件加速转码。通过解析RK3588的视频处理架构、环境搭建步骤和实战配置,提供了完整的命令示例和性能调优建议,帮助开发者高效处理多路视频转码任务。

weixin_29233333的博客 556

QT5.12 程序打包在win10发布(将QT5的工程项目打包成一个exe程序)

扣扣技术交流群:460189483  首先,先介绍自己使用的环境。我使用的QT版本是5.12。我的电脑windows系统是win10专业版的。下面的打包教程,都是亲测可用的。但个人认为,即便是不同的windows操作系统,不同的QT版本,也应该是可以的。希望大家能及时反馈,我好及时更新。 介绍一下我所使用的打包工具。一个是QT5自带的windeployqt(这个大家不需要下载安装),另外一个是...

u014453443的博客 2万+

HRnet的pytorch实现

HRnet的pytorch实现

奋土的博客 1953

QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)

QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)1.编译方式介绍:2.动态编译方式打包发布QT程序:方法一:手动复制方法二:使用工具 环境:QT5.8 _msvc2013_64+Win10_64 (MSVC 编译器) 1.编译方式介绍: Qt开发的程序发布的时候经常采用两种方式:1)静态编译,可生成单一的可执行文件;2)动态编译,需同时附上需要的dll...

Leon_Chen的博客 4135

CPA-7-资产减值

摘要:本文系统梳理了资产减值会计处理规范,涵盖六大要点:1)不同资产适用的减值准则(存货、长期资产、金融资产);2)减值测试触发条件与例外情形(商誉等需年度强制测试);3)存货可变现净值计算方法及特殊考量;4)可收回金额的双重判定标准(公允价值净额与现值孰高);5)资产组认定标准及减值分摊顺序(先商誉后按比例);6)含少数股东商誉的减值测试方法(需调整包含完全商誉的账面价值)。文中通过具体案例演示了合并报表中商誉减值的计算过程,强调比较基准应包含少数股东权益对应的商誉价值。

qq_34047402的博客 203

Open3D 实现CSF布料模拟算法【2025最新版】

CSF布料模拟算法在open3d模块下的实现,博客长期更新,本文最近更新时间为:2025年1月16日。。

点云侠的博客 5746

qt5+Opencv打包生成exe文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WLFF_优快云/article/details/51350524 </div> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template...

weixin_43124720的博客 970

从微服务到 Agent 服务:架构思维的迁移

微服务的概念最早在2014年由Martin Fowler提出,核心是“将单体应用拆分为一组小的服务,每个服务运行在独立的进程中,服务之间采用轻量级的通信机制互相协作,每个服务围绕具体业务构建,并且可以独立部署到生产环境”。单一职责:每个微服务只负责一个业务领域的功能,比如订单服务只处理订单相关的逻辑,用户服务只处理用户相关的逻辑被动响应:微服务是“哑的”,只有收到外部请求的时候才会执行逻辑,本身没有主动决策的能力固定流程:微服务的逻辑是硬编码的,执行流程是提前定义好的,只能按照程序员写的代码处理请求。

AI智能探索者的博客 275

Qt5程序在Windows 7/8上部署注意事项

和以往版本的QtSDK不同,Qt5.*对整个SDK结构进行了较大幅度的修改。以前4.*的代码移植到5.*版本上,需要更改的东西(包括QApplication、TextCodec等)也比较多。近日编译一个4.7.4的工程,略做微调顺利通过,然而在一台Windows 7测试机上运行时,总是报Runtime error,辗转几次之后这个发布问题终于解决。 首先要仔细看看官方的windows发布指南

Derry的专栏 1万+

《网络安全自学教程》- Windows安全机制:安全标识符,身份鉴别和访问控制

这篇文章详细介绍Windows和Linux如何标识用户,如何根据标识验证用户身份,如何根据用户身份做访问控制。

wangyuxiang946的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

QT应用在Windows下部署发布

刚接触QT,对于其在Windows下部署一头雾水。网上相应的资料很多都是手工程度比较高的,在这里我们可以使用QT自带的发布工具 - windeployqt.exe。部署发布 - 解决依赖该文件在QT的安装目录下,我Windows平台使用的mingw版本(5.8),其路径为D:\Qt\Qt5.8.0\5.8\mingw53_32\bin\windeployqt.exe使用Release模式编译程序,然

pcsxk的专栏 6416

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)

这几天在研究Qt,首先尝试用Qt Creator编写一些小程序来练练手。但是,在这个过程中却遇到了一个问题:使用Qt Creator编写的exe程序,只能在本机运行,跑到别的电脑上就无法运行了,提示缺少各种各样的库。这个问题要如何解决呢?

不积跬步,无以至千里! 3万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

QT5.4程序发布

QT5.4程序发布 这个月公司对所有人员按照产品进行了分组,以后只负责此类产品的事务,手头的事情交接完后,这段时间安卓的代码还不需要维护,刚好组里要做一个桌面级的产测工具,就临时决定用QT写一个,到现在刚好一周。Qt程序编写起来很省力,发布时却着实让人头疼了一把,很多Dll都要自己手动甄选然后添加到包里,太不方便了,而网上的文章大多人云亦云,不太靠谱。下面记录下来备忘,也希望能帮到其他的小伙伴。

echojiangyq的专栏 2039

QT项目打包(.exe手动打包和编译时打包)

qt在编译时生成.exe文件,但是当我们想要去发布或运行.exe是却发现总是提示缺少*.dll,因此我们需要在发布前进行打包。 这里介绍2中打包方式: 第一种是使用QT下的命令行手动打包 第二种是在编译时进行打包 第一种方法 1、找到生成的.exe可执行文件目录。 2、打开QT命令行工具,你的构建套件是哪个就选择哪个,图片见最后。 3、使用cd命令移动到我们的.exe的文件目录下。 -------...

weixin_44973731的博客 2218

关于qt5在win7下发布 & 打包

QT5 发布时,莫过于依赖动态链接库(dll) , 但是,QT5的动态链接库貌似都有2套 ,例如 Qt5Core (针对realese) , Qt5Cored (针对debug) ,凡事末尾带d的都是debug文件需要的链接库,莫嫌博主啰嗦 A 关于发布 1.首先,我们得找到自己安装QT的目录 2.找到上述路径 Qt/5.4/mingw491_32/bin 3.在路径中找到9...

weixin_30520015的博客 240
上一篇: git常用命令
下一篇: Qt5 在表格中加入控件
maverick1990
博客等级 码龄17年 278粉丝 132原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值