_AFXDLL

http://blog.csdn.net/heiyang/article/details/6651142


经常发现有#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等是否需要支持,如果静态链接, 
这些就不需要了。



说明,对于vs2008 的非sp1版本mfc,代码里没有_AFXDLL.  在vs2008里的工程属性里的 c/c++---命令行里有这个宏。


作者说的代码里里出现,可能是其他版本,或者作者说的错误的,但是作者总结的, dll制作是对的, 无论mfc 规则dll 还是mfc 扩展dll里,都有这个宏。


为了验证是否正确,用vc6试试:发现在 vc6的InitInstance函数里是有的, 可能高版本已经不区分了。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值