Qt技巧:Win7下打包发布Qt程序(解释的比较清楚,把exe和dll伪装合并成一个文件)
2016-06-10 21:23
826 查看
转自: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程序所依赖的库。
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,大告成。
http://blog.csdn.net/jan5_reyn/article/details/39042175
http://blog.163.com/qimo601@126/blog/static/1582209320132291718389/
最近做了个qt的程序,但是发布程序比较困难,因为qt5有着比较多的dll,如下两篇详述了qt dll依赖库,以及如何查询自己工程所用的dll及打包发布的方法。
QT 5的依赖链接库变得更多了,摸索许久,又查阅了一些资料,总结出以下QT 5程序所依赖的库。
一、依赖库一览
1.QT模块库
2.ICU(International Component for Unicode,Unicode工具)依赖库
3.QT插件库,Qt新增,有点坑爹,路径必须正确
4.EGL依赖库,为OpenGL,OpenGL es提供接口
5.mingw依赖库(msvc编译则无需这些库)
6.VC运行库(mingw编译则无需这些库)
二、文件结构
三、总结
说实话,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,大告成。
http://blog.csdn.net/jan5_reyn/article/details/39042175
相关文章推荐
- 让Qt支持Win7的Aero和毛玻璃效果
- Qt mac QMYSQL(动态加载插件QPluginLoader的用法)
- qt实现-给SQLITE添加自定义函数
- PyQt4 信号和槽用法总结
- Qt中添加背景图片
- A package manager for Qt
- 使用Qt installer framework制作安装包
- Qt下如何修改文件的时间(全平台修改)
- 用Qt 调用GDB调试 Arm程序 详细步骤----可单步执行每一行
- Qt下使用GDB远程调试ARM板
- Mac平台编译mupdf-qt的开源项目
- QT学习小结之鼠标事件
- Qt代码段3
- Qt 4的模态与非模态对话框用法总结
- QT中控制窗口大小
- Qt杂项(转)
- QT 出现光标不见的情况
- qt鼠标事件总结(转)
- Qt代码段2
- QT移植中的一些问题