将 Qt 动态链接生成的 exe 及依赖 dll 打包方法
Qt 静态编译链接生成的 exe 文件,不需依赖七大姑八大姨的一堆 dll,可以独立运行,发布很方便。但绝大多数用的都是 Qt 开源版本,如果用静态链接,会有些限制。那有没有办法即能享受静态编译的方便,又不受开源许可的限制呢?方法之一,就是用动态编译,然后把 exe 和需要的 dll 整合成一个文件,问题就解决了。
1 具体步骤:
1.1 先动态编译链接,生成 exe 文件
1.2 找到依赖的dll文件
这里,我们可以用 Process Explore 来获取所依赖的 dll 文件
下载:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx,打开 procexp.exe,通过菜单View==》Lower Pane View==》DLLs 勾选,显示 dll 窗口,同时勾选 Show Lower Pane。
这里,我们以 test.exe 为例,在 Qt 环境下,将 exe 运行起来,在 ProcessExplore 中,找到就可以找到 test.exe,选中,在下面就看到依赖的 dll 了。
系统目录下的,一般不用关心,按 Path 排序,看 Qt 目录及 mingw 目录下的,将这些 dll 拷贝出来,单独放到一个目录下。
1.3 打包
打包工具,这里选用 Enigma Virtual Box,为 free 的软件。
下载:http://enigmaprotector.com/assets/files/enigmavb.exe 安装,运行
Enter Input File Name 中,选择 exe
Enter Output File Name,输出文件名称
点 Add 按钮,将前面准备好的 dll 文件,添加进来
点 Files Options,勾选 Enable Files Virtualization 和 Compress files,OK
最后,点 Process,大功告成。打包生成的 exe 文件也可以像静态编译的一样,可以独立运行了。