使用STLPORT常会因为某个地方的笔误,引起其他地方大量的编译错误,其错误定位比较麻烦,因为使用的是VC6,对C++支持比较差,所以更是让人头疼,Ice3.3VC6的版本使用了STLPort 4.6.2,在编译时,Release版本没问题,Debug版本却忽然报了一大堆的错误:
:\ice-3.3.0-vc60\include\stlport\stl\debug\_iterator.h(127) : error C2504: '__owned_link' : base class undefined
d:\ice-3.3.0-vc60\include\stlport\stl\debug\_iterator.h(173) : see reference to class template instantiation '_STL::_DBG_iter_base<_Container>' being compiled
d:\ice-3.3.0-vc60\include\stlport\stl\debug\_iterator.h(146) : error C2629: unexpected 'struct _STL::_DBG_iter_base<_Container> ('
d:\ice-3.3.0-vc60\include\stlport\stl\debug\_iterator.h(173) : see reference to class template instantiation
。。。。。
后来我试着在stdafx.h加了一个开关
#ifdef _DEBUG
#define _STLP_DEBUG
#endif
问题解决,STLPORT诸如此类的开关好像还有很多,详细的请参见STLPort的编译说明
#define _STLP_USE_MFC 1 //使用MFC
#define _STLP_USE_MFC 1
#ifdef _STLP_NEW_PLATFORM_SDK
#undef _STLP_NEW_PLATFORM_SDK
#endif