Ошибки при компиляции в Visual C++ 2008, после установки MS 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' 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'
2 ответа
Решение
2011-10-15 01:56
Это решение решило мою проблему.
Обратите внимание, что вы должны убедиться, что 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