本文参阅了https://blog.csdn.net/yhjahjj1314/article/details/107081868
在软件开发过程中,经常遇到自己的exe要依赖其他dll的情况。特别是在依赖的库很多的时候,往往出现丢三落四的情况。enigma将所有的dll和exe文件打包成一个,简化了布置流程。下面举个例子。
1 利用qt开发一个简单的程序。Qt版本5.7.0,编译器采用MSVC2013,64bit
2 采用release模式编译
产生的文件名叫engma.exe
3 将编译产生的exe文件单独放置到一个文件夹内.文件夹起名exe
4 启动qt自带的命令行(在开始菜单里)
5 利用cd 命令进入exe文件夹,输入命令windeployqt engma.exe
6 经过一段时间的处理,windeployqt命令将把engma.exe依赖的所有qt库拷贝到exe文件夹内
7 但是与qt无关的库仍然没有拷贝到exe。为了将所有的依赖库都找到,可以采用depends软件,或者微软提供的procexp(64).exe程序。这里我使用后者。启动你的engma.exe,然后启动procexp64.exe(假如是32位程序,就启动procexp.exe)。
在procexp的列表里找到engma,点击,窗口下部将出现一系列受依赖的dll,以及其所在的路径。
事实上,虽然列表中dll很多,但是真正被依赖的只有msvp120.dll msvcr120.dll msvcp_win.dll msvcrt.dll四个。手动将它们从原位置拷贝到exe文件夹。
8 启动enigma,点击browse按钮,将engma.exe选中
选中后,output file栏会给打包结果自动命名。当然,你可以手动改名。
9 点击File Options按钮,在弹出的对话框里面勾选compress files
10 点击左下角的“Add File”按钮,开始增加文件,如下图所示。
在弹出的对话框里选中所有的依赖dll
11 还有一些dll,是位于platforms文件夹内的。为了把这些dll也加入,要再次点击Add按钮,选择New Folder
12 新建文件夹platforms
13 然后再次选择"Add Files",把platforms中的文件添加到项目里。
14 点击process按钮,开始打包
打包完成后,在exe文件夹内将出现打包结果.