环境 vs2008 sp1
WTL81
解决方案:
#ifdef __ATLMISC_H__ //如果包含了atlmisc.h
#define __ATLTYPES_H__ //则不编译atltypes.h
#endif
#include <atlimage.h>
此时可能还有 CString 不明确等错误
可使用宏定义
//#define _WTL_NO_WTYPES //屏蔽WTL的CSize等类
#define _WTL_NO_CSTRING //屏蔽WTL的CString
问题分析
出现这个问题是 ATL和 WTL混用 引起的 ,<atlmisc.h>属于WTL ,<atlimage.h> 属于 ATL。
在
WTL 的<atlmisc.h>
ATL的<atltypes.h> 与 <atlstr.h>
中 , 各自定义了CString, CRect等 类,如果同时包含就可能出现类重定义的问题。
不过可以通过各种宏定义来控制各个类是否编译。
本文解决在VS2008SP1环境下,使用WTL81与ATL时出现的类重定义问题,如CString、CRect等。通过宏定义控制,避免<atlmisc.h>与<atltypes.h>的冲突,确保项目顺利编译。
296

被折叠的 条评论
为什么被折叠?



