zoukankan      html  css  js  c++  java
  • 混用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,不过试了下错误一大堆


    回复人: carr123 2010-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

  • 相关阅读:
    关于Jquery事件绑定的心得
    WEB前端笔记
    Linux文件权限与属性详解 之 ACL
    Linux文件权限与属性详解 之 一般权限
    MarkDown使用教程
    图床神器:七牛云 + Mpic + FScapture
    Python装饰器之 property()
    Python描述符 (descriptor) 详解
    Python魔法方法之属性访问 ( __getattr__, __getattribute__, __setattr__, __delattr__ )
    Python魔法方法总结及注意事项
  • 原文地址:https://www.cnblogs.com/kevinzhwl/p/3878859.html
Copyright © 2011-2022 走看看