Qt5 在win7上发布 & 打包依赖dll生成exe方法
来源:互联网 发布:c语言如何判断闰年 编辑:程序博客网 时间:2024/05/21 06:25
转自: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模块库
Qt5Core.dll #QT核心库
Qt5Gui.dll #QT Gui库
Qt5Widgets.dll #QT Widgets库,QT 5中GUI程序基本都需要此dll
#还有其他程序用到的Qt5XXX.dll
2.ICU(International Component for Unicode,Unicode工具)依赖库
icudt49.dll
icuin49.dll
icuuc49.dll
3.QT插件库,Qt新增,有点坑爹,路径必须正确
# 根据不同的程序,需要不同的插件库
#例如 QT_DIR/plugins/*/*.dll
# 需要将 platforms/*.dll,accessible/*.dll的文件结构保留
# 放在你所编译的程序所在目录
plugins/platforms/qwindows.dll
plugins/accessible/qtaccessiblewidgets.dll
4.EGL依赖库,为OpenGL,OpenGL es提供接口
libEGL.dll
libGLESv2.dll
5.mingw依赖库(msvc编译则无需这些库)
libgcc_s_sjlj-1.dll
libstdc++-6.dll
libwinpthread-1.dll
6.VC运行库(mingw编译则无需这些库)
msvcr110.dll(对应VS2012)
msvcp110.dll
二、文件结构
--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,大告成。
- Qt5 在win7上发布 & 打包依赖dll生成exe方法
- Qt5 在win7上发布 & 打包依赖dll生成exe方法
- Qt5 在win7上发布 & 打包依赖dll生成exe方法
- Qt5.3 在Win7,Win8下发布打包依赖dll生成exe方法
- QT5生成的exe自动拷贝依赖的dll并打包的方法
- QT5之exe发布及dll打包
- QT5.9.1生成的exe自动拷贝依赖的dll并打包
- 关于qt5在win7下发布 & 打包
- 将Qt 动态链接生成的exe及依赖dll打包方法
- 将Qt 动态链接生成的exe及依赖dll打包方法
- Qt--将Qt 动态链接生成的exe及依赖dll打包方法
- 将Qt 动态链接生成的exe及依赖dll打包方法
- 将Qt 动态链接生成的exe及依赖dll打包方法
- 将Qt 动态链接生成的exe及依赖dll打包方法
- QT生成的exe自动拷贝依赖的dll并打包的方法
- QT生成的exe自动拷贝依赖的dll并打包的方法
- 将动态编译生成的exe及其依赖的dll打包方法
- 将Qt 动态链接生成的exe及依赖dll打包方法
- 产品36记:第一,有梦想的地方
- Problem G B. Calendar Codeforces Round #183 (Div. 2)
- svn打tag脚本
- MyBatis学习_1_ Result Maps collection does not contain value for *
- javascript截取字符串(支持中英文混合)
- Qt5 在win7上发布 & 打包依赖dll生成exe方法
- onenand小结 及 与nor 和nand 的区别
- android四大组件
- Eclipse安装Svn等插件简介
- Java SE 自学笔记9 之 抽象类、接口、内部类、匿名内部类、枚举
- 屏蔽搜索引擎机器人的抓取
- eclipse svn密码修改
- 固定转浮动DIV
- JSP动态选择复选框(通过JSTL实现)