_AFXDLL

经常发现有#ifdef _AFXDLL.......#else......这样的语句我也在网上找了找答案,得知:定义这个符号表示动态连接MFC。
在用VC编程时,1新建-》2MFC APPWIZARD-》3....-》4...-》到 STEP 3 OF 4这一步有个选项 1 D当共享DLL
     2 S当STATICALLY连接库
我选“1 D当共享DLL”再“确定”,这时,框架生成的原文件中就定义了“_AFXDLL”,然后是一些包含头文件,其中就包含了#def _AFXDLL.......#else......所在的文件,然后是当前的视图,文档,等代码
   当编译时因为定义了_AFXDLL,所以就编译#ifdef _AFXDLL中的内容
   在制作DLL时也有

1“动态连接库和MFC STATICALLY 连接”
2“动态连接库使用MFC共享”


也就是说如果原文件定义了_AFXDLL,说明原文件中有某些类,函数等,是以MFC DLL的形式提供的(也就是动态连接到MFC),如果原文件中没定义_AFXDLL,则这些类,函数等的实现代码是被直接插入原文件(也就是静态连接到MFC)。

指MFC的动态库是否静态链接,或动态链接(有_AFXDLL),也就是说
你编译的程序中,当运行时,mfc42.dll等是否需要支持,如果静态链接,
这些就不需要了。


你可能感兴趣的:(编程,框架,文档,dll,mfc)