Я получаю ошибку переопределения typedef в двух строках в MacTypes.h, в следующем фрагменте кода:
#if __LP64__
typedef unsigned int UInt32;
typedef signed int SInt32;
#else
typedef unsigned long UInt32; // error here
typedef signed long SInt32; // error here
#endif
Ошибка Clang указывает на следующее предыдущее определение в CFBase.h (в CoreFoundation.framework):
#if !defined(__MACTYPES__)
#if !defined(_OS_OSTYPES_H)
typedef unsigned char Boolean;
typedef unsigned char UInt8;
typedef signed char SInt8;
typedef unsigned short UInt16;
typedef signed short SInt16;
typedef unsigned int UInt32; // previous definition is here
typedef signed int SInt32; // previous definition is here
typedef uint64_t UInt64;
typedef int64_t SInt64;
typedef SInt32 OSStatus;
#endif
...
Это очень странно, так как __LP64__
по-видимому, всегда верно для платформы Mac, так почему этот typedef даже оценивается? И почему существует путь компиляции, в котором два предоставленных ОС определения противоречат друг другу?
РЕДАКТИРОВАТЬ: Вот скриншот ошибок в Xcode.
Я вычеркнул путь к файлу, который включает в себя <Carbon/Carbon.h>
так как он содержит имя моего клиента (файл одинаков для обеих ошибок). Ниже приведены полные имена путей (все они содержатся в Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks):
Обновить:
В моем собственном коде, как раз перед #include <Carbon/Carbon.h>
Я добавил следующее:
#if __LP64__
#error Has LP64
#else
#error Doesn't have LP64
#endif
…и я получаю сообщение об ошибке «Нет LP64», так что, похоже, это корень проблемы. Однако, когда я компилирую следующее в Sublime Text 2 (с SublimeClang) …
int main()
{
#if __LP64__
#error Has LP64
#else
#error Doesn't have LP64
#endif
return 0;
}
…Я получаю «Имеет LP64». Выполнение поиска текста проекта для #define __LP64__
Я не могу найти ничего в моем проекте, и при поиске __LP64__
это просто приходит с грузом #if
с и #ifdef
s. Кто-нибудь знает, откуда могла появиться эта ошибка?
В конце концов оказалось, что эта проблема была связана с несколькими установками XCode: я недавно установил XCode 4.4 (из App Store), и у меня все еще была где-то установка XCode 3. Я решил это, запустив uninstall-devtools
который удалил Xcode 3 вместе со всеми его различными путями в папках Library и Developer. Я не уверен, почему конфликтующие установки Xcode могут вызвать такую проблему, но удаление Xcode 3 решило ее. Я надеюсь, что это поможет любому, у кого есть такая проблема — это, конечно, не то, чего я ожидал.
Других решений пока нет …