一般通过visual studio 编译的时候可以分为静态编译和动态编译:
静态编译: 将所有代码生成一个文件,不需要外部链接库。优点是生成的程序可以在任何PC上运行,不需要安装其他库,但是体积比较大,因为所有用到的东西都要到里面。
动态编译:只生成最小的可执行文件。优点是文件小,带UI的程序可能只有几百KB,缺点是要用到动态链接库,电脑上如果没有安装对应的动态链接库将无法运行。
我是用visual studio+Qt进行程序开发,本来想生成静态编译的,但是后来发现Qt只提供dll文件,不提供源码(可能付费的企业版会提供,我用的是免费版),无论怎么配置生成的exe都必须依赖外部dll文件。但是用我程序的用户电脑上一般不会安装Qt的动态库;当然我也可以把动态库拷贝给用户,但是因为是一个非安装版的小程序,如果操作太复杂用户就不用了,所以还是希望能生成一个exe文件,不用安装,就是作为一个小工具使用,后来我发现了一个好用的工具Enigma Virtual Box, 这个工具可以把exe文件和依赖的dll文件打包成一个exe文件,这样就和静态编译生成的exe一样了。不过由于是打包整个dll,导致体积比较大。
如上图所示, 打包后的exe约为原始exe+dll文件的总和。需要自己找出依赖哪些dll库.
操作如上图所示,选择待封包的主程序和封包后的程序,添加上对应的dll文件,点击封包即刻。