环境 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等 类,如果同时包含就可能出现类重定义的问题。
不过可以通过各种宏定义来控制各个类是否编译。