混用ATL MFC WTL的问题-CString的冲突

主      题: 混用ATL MFC WTL的问题-CString的冲突
作      者: mc_
回复次数: 3
发表时间: 2010-3-14 12:42:33
正文内容:
MFC的定义是全局的,和ATL混用好像没啥问题,不过和WTL混在一起要出现CString的冲突,说是无法解析多个定义。
atlstr.h是这样定义的,也就是在混合MFC的情况下ATL里头的CString 的定义被取消掉了
#ifndef _AFX
typedef CAtlStringW CStringW;
typedef CAtlStringA CStringA;
typedef CAtlString CString;
#endif

afxstr.h是这样定义的
typedef ATL::CStringT< wchar_t, StrTraitMFC< wchar_t > > CStringW;
typedef ATL::CStringT< char, StrTraitMFC< char > > CStringA;
typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString;

这两种CString肯定是一回事,不过为了顺利使用WTL,还是需要ATL名称空间里的ATL::CString,虽然可以使用ATL::CAtlString,WTL里面肯定不会认CAtlString

我在stdafx.h里头试图用#undef CString 去掉全局的MFC CString,没有成功, 用#undef _AFX 使用在ATL头文件之前定义一下,也没成功

问哈大家有啥子好办法?MFC可否被定义成名称空间namespace,不过试了下错误一大堆


回复人: carr1232010-3-14 23:53:32
#define _WTL_NO_CString


回复人: mc_2010-3-14 23:57:40
感谢,这个问题我已解决,_WTL_NO_CSTRING 只能消除WTL里定义的CString


回复人: mc_2010-3-15 0:01:23
关于这个问题的解决办法,本人现在贴出来分享
关键在这两个声明上

#undef __ATLSTR_H__    
#define _ATL_TMP_NO_CSTRING    //本人用的是WTL81_9127

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值