環境 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等 類,如果同時包含就可能出現類重定義的問題。
不過可以通過各種宏定義來控制各個類是否編譯。