2009-06-17 1 views
3

Когда я смешивать .m и .cpp У меня есть проблема с Xcode не находя CPP по умолчанию включают в себя (как <map>)Xcode не удается найти стандартный C++ включить файл

обновление: я добавляю статический lib в моем проекте iphone (который компилируется без каких-либо проблем), а затем используйте include внутри .m, тогда зависимости .h от C++ становятся сумасшедшими .. не могут найти или не скомпилировать, я пробовал .mm, но он не работает.

+0

Просьба предоставить более подробную информацию о вашем проекте и версии Xcode. Мой Xcode (gcc) находит все, как ожидалось. –

+0

Вы должны быть более конкретными, чтобы получить полезный ответ - я могу только догадываться о ответе. Пожалуйста, покажите нам код, о котором идет речь, и проясните расширение, используемое в исходных файлах. –

+0

xcode 3.1.3 со статическим lib в приложении iphone – CiNN

ответ

6

Если вы используете Objective-C++ (т. Е. Смешиваете Objective-C и C++ в одном исходном файле или импортируете заголовок C++ в файл Objective-C), вы должны использовать расширение .mm для файлов исходного кода. По умолчанию Xcode будет компилировать файлы .mm с использованием компилятора Objective-C++. .m файлы скомпилированы с использованием стандартного компилятора C.

+0

Хорошим дополнением к этому является то, что ** любой ** файл реализации, который импортирует все, что скомпилировано компилятором C++, должно также использовать '.mm'. – SpacyRicochet

0

Лучший способ диагностировать это - перетащить строку «Compiling foo.mm» из окна «Результаты сборки» в ответ на это сообщение. Это показывает нам, что ваш проект говорит компилятору, в мучительных подробностях, и покажет, что именно не так.

+0

Строка Location C++ config.h: 153: error: expected '=', ',', ';', 'asm' или '__attribute__' до 'std' – CiNN

+0

/Developer/Platforms/iPhoneSimulator.platform/Developer/ SDK/iPhoneSimulator3.0.sdk/usr/include/libkern/OSByteOrder.h: 92: ошибка: «uint16_t» не называет тип – CiNN

+0

Пожалуйста, укажите строку, которая начинается с «Компиляция», чтобы мы могли видеть вход *, * не только * выход *. – cdespinosa