MFC中共享的DLL和静态的DLL的区别

共享的DLL是说在编译的时候,程序自动在电脑的C:\WINDOWS\system32目录下找需要的DLL文件,这个只是针对与在该目录下已经有这些DLL文件的情况。

静态的DLL是说在编译的时候把类库加到程序文件中,这个针对于在C:\WINDOWS\system32目录下找不到需要的DLL文件的情况。

用VS2005写软件,在项目属性中有一项MFC的使用,有三种设置:

1.使用标准Windows库
2.在共享DLL中使用MFC
3.在静态库中使用MFC
不关移植性的事,第二种指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件,第三种是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行.


一般选第二种,因为大多数系统中都会带有MFC 相关的DLL,因为许多程序都是用MFC做的,发布时会发布相关DLL,所以不用静态连接.

VS2005的,系统带它的DLL的确实不多,用静态连接吧,另外楼上说效率没有区别,这是不对的,静态连接效率其实是要好一些的,因为不用加载DLL了.

本人建议用静态的DLL,因为怕在别人的电脑上不能运行。

原文地址:https://www.cnblogs.com/luoyaoquan/p/2022179.html