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

转载 2013年12月04日 13:45:28

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

分类: Qt 软件 1195人阅读 评论(0) 收藏 举报

目录(?)[+]

转自: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,大告成。

更多1

相关文章推荐

opencv之Rgb图像转化到HSV、Lab空间,对各通道的操作

一:色彩模式: 1、颜色模式HSV:色象 饱和度 明度,是基于视觉反映的颜色 H.色象:360度,从0开始,表示纯红色,360度也表示纯红色 ,黑白无色象. S.饱和度:100%表示色彩纯度为满...

OpenCV图像Surf与flann特征点

Surf(Speed Up Robust Feature)Surf算法的原理                                                              ...
  • Augusdi
  • Augusdi
  • 2013年06月01日 21:36
  • 13313

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

转自: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...

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

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

使用WinRar将Qt编译生成的exe和依赖的dll文件打包为一个exe文件的简单方法

如题,需要将QtCreator编译生成的*.exe文件和它所依赖的动态链接库(*.dll)文件打包为一个exe文件,步骤如下: (1)将编译生成的AppTest.exe、依赖的库文件、图标文件等复制...

将Qt 动态链接生成的exe及依赖dll打包方法

转载:http://www.qtcn.org/bbs/apps.php?q=diary&a=detail&did=1336&uid=123401 Qt静态编译链接生成的exe文件,不需依赖一...

Qt--将Qt 动态链接生成的exe及依赖dll打包方法

Qt静态编译链接生成的exe文件,不需依赖dll,可以独立运行,发布很方便。 但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制。 方法之一,就是用动态编译,然后把exe和需要的dll整合...
  • xsc_c
  • xsc_c
  • 2013年07月09日 11:24
  • 3293

py2exe打包生成exe,图标在win7下面不显示解决方案

py2exe打包生成exe,图标在win7下面不显示解决方案

win7平台下QT软件的打包与发布(部署与安装) 打包成安装包样式

软件编写调试好之后最重要的就是打包和发布,这样软件才好传播。 qt软件的打包发布一个难点是必备dll文件的识别。不少日志说用dependencyWalker,今天我试了一下发现查找dll不完...

win7安装QT时出现"无法定位程序输入点_except1于动态链接库MSVCR120.dll"时的解决办法

这两天回老家了,没事打算在笔记本上装个QT,系统是新做的WIN7 64位,结果试了几个版本,死活装不上,总是出现如下错误: "无法定位程序输入点_except1于动态链接库MSVCR120.dll" ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt5 在win7上发布 & 打包依赖dll生成exe方法
举报原因:
原因补充:

(最多只允许输入30个字)