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

mc_ 2010-03-14 10:35:48
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,不过试了下错误一大堆
...全文
268 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dong364 2010-07-18
  • 打赏
  • 举报
回复
何必这么发麻呢,用std::wstring吧
jacks0702 2010-07-17
  • 打赏
  • 举报
回复
WTL没用过,好用吗?
  • 打赏
  • 举报
回复
#define _ATL_ALL_WARNINGS
#include <atlstr.h> //放在第一行.
#include <atlbase.h>


#define _WTL_NO_CSTRING //看这里.OK.
#include <atlmisc.h>
#include <atlddx.h>
lvzehong 2010-07-13
  • 打赏
  • 举报
回复
我也遇到了同样的问题,,,

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧