首页| 论坛| 消息

标题:将Qt 动态链接生成的exe及依赖dll打包方法
作者:realfan
日期:2013-03-28 17:30
内容:

将Qt 动态链接生成的exe及依赖dll打包方法
Qt静态编译链接生成的exe文件,不需依赖一堆dll,可以独立运行,发布很方便。但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制。那有没有办法即能享受静态编译的方便,又不受开源许可的限制呢?方法之一,就是用动态编译,然后把exe和需要的dll整合成一个文件,问题就解决了。


具体步骤:
一,先动态编译链接,生成exe文件
二,找到依赖的dll文件
这里,我们可以用Process Explore来获取所依赖的dll文件
下载:http://pan.baidu.com/share/link?shareid=1820917417&uk=673227135
打开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=1837762045&uk=673227135
安装,运行
.
Enter Input File Name中,选择exe
Enter Output File Name,输出文件名称
点Add按钮,将前面准备好的dll文件,添加进来
点Files Options,勾选Enable Files Virtualization和Compress files,OK
最后,点Process,大告成。打包生成的exe文件也可以象静态编译的一样,可以独立运行了。
.


#1 [roywillow 03-28 18:24]
你好像忘了platforms插件哦
#2 回 1楼(roywillow) 的帖子 [realfan 03-28 22:02]
我示例用的是Qt4.8.4,没涉及到platforms插件。
但确实应该强调一下。
不知道Qt5程序,process explore能否检测到依赖platforms插件dll。
刚换的电脑,还没装Qt5,所以没试。
#3 回 2楼(realfan) 的帖子 [jdwx 03-28 22:20]
Qt5的程序process explore一样的好用。
#4 [hp_201111 03-28 22:30]
depends.exe可以在不运行 Qt 程序的情况下 查出 Qt程序 依赖的 Dll。
当然 也能查别的exe 程序。
#5 [彩阳 03-28 22:45]
不会把user32.dll、kernel32.dll一起打包吧。

<< 1 2 3 >> (1/9)

回复 发表
主题 版块