将Qt 动态链接生成的exe及依赖dll打包方法
Qt静态 编译 链接生成的exe文件,不需依赖一堆dll,可以独立运行,发布很方便。但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制。那有 没有 办法即能享受静态编译的方便,又不受开源许可的限制呢?方法之一,就是用动态编译,然后把exe和需要的dll整合成一个 文件 , 问题 就解决了。
具体步骤:
一,先动态编译链接,生成exe文件
二,找到依赖的dll文件
这里,我们可以用Process Explore来获取所依赖的dll文件
下载:点击打开链接
打开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文件也可以象静态编译的一样,可以独立运行了。
Qt静态 编译 链接生成的exe文件,不需依赖一堆dll,可以独立运行,发布很方便。但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制。那有 没有 办法即能享受静态编译的方便,又不受开源许可的限制呢?方法之一,就是用动态编译,然后把exe和需要的dll整合成一个 文件 , 问题 就解决了。
具体步骤:
一,先动态编译链接,生成exe文件
二,找到依赖的dll文件
这里,我们可以用Process Explore来获取所依赖的dll文件
下载:点击打开链接
打开procexp.exe,通过菜单View==》Lower Pane View==》DLLs
![将Qt <wbr>动态链接生成的exe及依赖dll打包方法 将Qt <wbr>动态链接生成的exe及依赖dll打包方法](https://i-blog.csdnimg.cn/blog_migrate/8dcb820aeb9b34ca6269748717e00140.png)
这里,我们以test.exe为例,在 Qt环境 下,将exe运行起来,在ProcessExplor中,找到就可以找到test.exe,选中,在下面就看到依赖的dll了。
![将Qt <wbr>动态链接生成的exe及依赖dll打包方法 将Qt <wbr>动态链接生成的exe及依赖dll打包方法](https://i-blog.csdnimg.cn/blog_migrate/3a2dd3bfd2ff28a9c5f570b4a67bd34c.png)
系统目录下的,一般不用关心,按Path排序,看Qt目录及mingw目录下的,将这些dll拷贝出来,单独放到一个目录下。
三,打包
打包工具,这里选用Enigma Virtual Box,
下载: http://pan.baidu.com/share/link?shareid=1837762045&uk=673227135
安装 ,运行
![将Qt <wbr>动态链接生成的exe及依赖dll打包方法 将Qt <wbr>动态链接生成的exe及依赖dll打包方法](https://i-blog.csdnimg.cn/blog_migrate/182a214c4a7b6550d6c584075c4e72cc.png)
Enter Input File Name中,选择exe
Enter Output File Name,输出文件名称
点Add按钮,将前面准备好的dll文件,添加进来
点Files Options,勾选Enable Files Virtualization和Compress files,OK
最后,点Process,大告成。 打包生成的exe文件也可以象静态编译的一样,可以独立运行了。
![将Qt <wbr>动态链接生成的exe及依赖dll打包方法 将Qt <wbr>动态链接生成的exe及依赖dll打包方法](https://i-blog.csdnimg.cn/blog_migrate/79de0cbcb5ce7a278afdabd8c2a08c36.png)