刚接触ATL/WTL, 下载的demo代码  http://www.codeproject.com/wtl/wtl4mfc8.asp#xx982668xx, 
自己编译时有问题:   error C2872: “_U_STRINGorID” : 不明确的符号
        可能是“c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\atlapp.h (743) : WTL::_U_STRINGorID”
        或      “c:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include\atlwin.h(93) : ATL::_U_STRINGorID”---------------------------------------------------------------
所提到的2个头文件一个是ATL的, 还有一个是WTL(下载的包中手工添加到include目录中)。
请问这种问题该如何解决?  
    竟然会有重复定义?谁遇到过这样的问题?

解决方案 »

  1.   

    Tools -> Option -> Directories
    设定包含头文件的次序
      

  2.   

    不要使用WTL的CString,它不受官方支持,使用ATL的。// WTL
    #define _WTL_NO_CSTRING
      

  3.   

    vc6 + wtl7vc7 + wtl7.1 (7.5) 需要按上修改
      

  4.   

    answer1:
    与ATL中的CString名称相同,你只要在包含wtl的头文件前先包含atlstr.h,然后定义#define _WTL_NO_CSTRING就可以了。如果还不行的话,就不要using namespace WTL; 而在使用到WTL的东西前加WTL::就行了
    answer2:
    修改一下Option里面头文件的次序就可以