Visual c++ 在Visual C+中编译时出错+;2008年,安装MS平台SDK后

Visual c++ 在Visual C+中编译时出错+;2008年,安装MS平台SDK后,visual-c++,platform-sdk,Visual C++,Platform Sdk,我使用的是OpenCV,在我安装了Microsoft Platform SDK以使用OpenGL之后,在尝试编译我的OpenCV项目时出现了这些错误 1>d:\program files\microsoft platform sdk for windows server 2003 r2\include\winnt.h(2645) : error C2733: second C linkage of overloaded function '_interlockedbittestandset

我使用的是OpenCV,在我安装了Microsoft Platform SDK以使用OpenGL之后,在尝试编译我的OpenCV项目时出现了这些错误

1>d:\program files\microsoft platform sdk for windows server 2003 r2\include\winnt.h(2645) : error C2733: second C linkage of overloaded function '_interlockedbittestandset' not allowed
1>        d:\program files\microsoft platform sdk for windows server 2003 r2\include\winnt.h(2642) : see declaration of '_interlockedbittestandset'
1>d:\program files\microsoft platform sdk for windows server 2003 r2\include\winnt.h(2651) : error C2733: second C linkage of overloaded function '_interlockedbittestandreset' not allowed
1>        d:\program files\microsoft platform sdk for windows server 2003 r2\include\winnt.h(2648) : see declaration of '_interlockedbittestandreset'
解决方案:

解决了我的问题

请注意,在下面的修复之前,您必须确保不会意外包含
intrin.h
(例如,您使用的其他头文件)

#if _MSC_VER >= 1400
//  Following 8 lines: workaround for a bug in some older SDKs
#   pragma push_macro("_interlockedbittestandset")
#   pragma push_macro("_interlockedbittestandreset")
#   pragma push_macro("_interlockedbittestandset64")
#   pragma push_macro("_interlockedbittestandreset64")
#   define _interlockedbittestandset _local_interlockedbittestandset
#   define _interlockedbittestandreset _local_interlockedbittestandreset
#   define _interlockedbittestandset64 _local_interlockedbittestandset64
#   define _interlockedbittestandreset64 _local_interlockedbittestandreset64
#   include <intrin.h> // to force the header not to be included elsewhere
#   pragma pop_macro("_interlockedbittestandreset64")
#   pragma pop_macro("_interlockedbittestandset64")
#   pragma pop_macro("_interlockedbittestandreset")
#   pragma pop_macro("_interlockedbittestandset")
#endif
\if\u MSC\u VER>=1400
//以下8行:解决一些旧SDK中的错误
#pragma push_宏(“_interlockedbitstandset”)
#pragma push_宏(“_interlockedbitstandset”)
#pragma push_宏(“_interlockedbitstandset64”)
#pragma push_宏(“_interlockedbitstandstatreset64”)
#定义_InterlocatedBitStandSet _local _InterlocatedBitStandSet
#定义_InterlocatedBitStandReset _local _InterlocatedBitStandReset
#定义_InterlocatedBitStandSet64 _local_InterlocatedBitStandSet64
#定义_interlockedBitStandReset64 _local _interlockedBitStandReset64
#include//强制在其他位置不包含标题
#pragma pop_宏(“_interlockedbitstandstatreset64”)
#pragma pop_宏(“_interlockedbitstandset64”)
#pragma pop_宏(“_interlockedbitstandsete”)
#pragma pop_宏(“_interlockedbitstandset”)
#恩迪夫

您的解决方案对我没有帮助。我正在使用VS2005,并尝试了Windows SDK v6.0A和v7.0A。还在找solution@geotavros:您是否检查了其他解决方案?您应该包括解决方案的要点,而不是简单地提供链接。