如果选择"在共享 DLL 中使用 MFC"的话,你编译后的程序中不包含MFC库,所以文件会比较小,但是如果你的程序直接移到一个没有安装过MFC的机器上时,可能会导致找不到MFC的DLL,如果选择"在静态库中使用 MFC ",那你编译后的程序就直接包含了调用MFC的部分的库,文件可能会大一些,但是可以直接移到其他机器上运行.
一般都是选择“在共享 DLL 中使用 MFC”,这样程序少,而且Windows下大都有MFC的DLL.
静态库中编译出来的可执行文件拿到其它机器上也可以运行,共享DLL中编译出来的可执行文件在本机上可以执行,若拿到其它机器上就需要相应的动态库支持。
使用VS2008,在项目属性中有一项MFC的使用,有三种设置:
1.使用标准Windows库
2.在共享DLL中使用MFC
3.在静态库中使用MFC
第一种顾名思义。第二种指的是打包时一些MFC的DLL中的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件。第三种是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行。
mfc 静态库(在静态库中使用MFC) 大, 客户使用方便,但别的程序员用这个做开发稍难
不用mfc(使用标准Windows库) 小, 在windows平台上即可使用,但编写过程中不能使用mfc函数,二次开发和客户使用都方便mfc 动态库(在共享DLL中使用MFC) 中, 客户使用不方便,但别的程序员用这个方便;
“在静态库中使用 MFC” 用到的MFC代码嵌入可执行程序中,因此可执行程序可以脱离MFC运行时库环境运行,独立生成exe不需要再库/dll就可以运行;“在共享 DLL 中使用 MFC”和“使用标准 Windows 库”编译出来的程序依赖动态库.
我个人理解是:比较经常更新的,一般都是使用“在共享 DLL 中使用 MFC“,这样我们程序升级了,主要给客户更新dll即可,不需要改变程序的原来结构,更新也方便快捷~~
如果是用于比较简单或者固定的,一般用”在静态库中使用 MFC” ,比如一些小工具