Ошибки при компиляции в Visual C 2008, после установки MS Platform SDK

#visual-c #platform-sdk

#visual-c #платформа-sdk

Вопрос:

Я использовал OpenCV, и после того, как я установил Microsoft Platform SDK для работы с OpenGL, эти ошибки появляются при попытке скомпилировать мой проект opencv.

 1>d:program filesmicrosoft platform sdk for windows server 2003 r2includewinnt.h(2645) : error C2733: second C linkage of overloaded function '_interlockedbittestandset' not allowed
1>        d:program filesmicrosoft platform sdk for windows server 2003 r2includewinnt.h(2642) : see declaration of '_interlockedbittestandset'
1>d:program filesmicrosoft platform sdk for windows server 2003 r2includewinnt.h(2651) : error C2733: second C linkage of overloaded function '_interlockedbittestandreset' not allowed
1>        d:program filesmicrosoft platform sdk for windows server 2003 r2includewinnt.h(2648) : see declaration of '_interlockedbittestandreset'
  

Ответ №1:

Это решение решило мою проблему.

Обратите внимание, что вы должны убедиться, что 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
  

Комментарии:

1. вы должны указать суть решения, а не просто предоставить ссылку.

Ответ №2:

Комментарии:

1. Ваше решение мне не помогло. Я использую VS 2005 и попробовал Windows SDK v6.0A и v7.0A. Все еще ищу решение

2. @geotavros: вы проверили другое решение?