分类: C/C++
2006-04-22 04:00:10
error C2733: second C linkage of overloaded function 'InterlockedIncrement' not allowed.
等错误,这是因为 Microsoft Platform SDK 中的 WinBase.h 定义的线程安全函数InterlockedIncrement、InterlockedDecrement、InterlockedExchange 和 STLport 中 _threads.h 内定义的函数起冲突引发的错误。
解决办法是修改 STLport 的宏开关,打开\STLport-4.5.3\stlport 目录下的 stl_user_config.h 文件,找到以下两行宏定义:
//# define _STLP_USE_MFC 1
//# define _STLP_NEW_PLATFORM_SDK 1
将注释符号“//”删除,而且还要保证 Microsoft Platform SDK 的搜索路径必须在 STLport 和 MSVC 自己的搜索路径之前,这样就可以进行正常编译了。据说在VC7.0上没有这个问题!不过我没试过。
上面是作者的说法,下面偶说下不同的地方.
只是改了# define _STLP_NEW_PLATFORM_SDK 1.偶的STLPORT路径还在Microsoft Platform SDK 前面,好象也没事哦.先用着再说.有问题再改吧.
嘿嘿,偶以前用NOWINBASEINTERLOCK选项避开它们,不过有时候如用WTL避不开哦,只要使用STL就会出现这烦人的事.现在好了,世界清静了.
偶记在这儿有另外一层意思,这个stl_user_config.h文件还有些选项,以后顺利好说,再出些奇怪问题,来看看它也不错.