2011-12-22 3 views
0

Я не знаю, является ли это какой-то глупой ошибкой с моего конца, или Xcode 4.2.1 что-то делает, но я не могу скомпилировать даже простой проект с C++ и файлы ObjC. Я делал это в прошлом, но так или иначе компилятор обрабатывает файлы заголовков C++ в качестве заголовка ObjC и бросали глупые ошибки, каккомпиляция файлов C++ и ObjC в том же проекте

Я могу собрать, если я заставляю собрать все файлы, ObjectiveC++ из «Параметры проекта> Компилятор Apple LLVM 3.0 - Язык> Компилировать источники как». Но это всего лишь обходной путь, и я не хочу во что бы то ни стало бороться, когда код вырос.

+2

Для файлов, содержащих (или #including) оба кода Objective-C и C++, вы указали им расширение .mm-файла? – pmdj

+0

Что такое расширение файла, который компилируется? – Mark

+0

В проекте содержится 4 файла Test.h Test.cpp AppDel.h и AppDel.m. Test. * Файлы содержат чистый код C++, а AppDel. * Имеют чистый код ObjectiveC, AppDel.m содержит «#import Test.h» – chunkyguy

ответ

3

Я просто сделал это с проектом, над которым я работаю. Я считаю, что @pmjordan прав, вам нужно переименовать любые файлы, ссылающиеся на код C++, на .mm файлы, а не на .m.

+0

, но в будущем я планирую использовать код box2d, который содержит все .cpp-файлы, я не думаю, что переименование - это реальный вариант. – chunkyguy

+0

You могут компилировать полностью-C++-файлы отдельно (просто убедитесь, что они имеют расширение .cpp) из файлов Objective-C (.m), а затем использовать файлы Obj-C++ (.mm) для разработки интерфейса между box2d и вашим кодом Cocoa. Все они сводятся к файлам .o, которые могут быть связаны друг с другом. Различные файлы - это просто сообщить компилятору, какие правила следует соблюдать для каждого блока компиляции. – matthias

+0

Да, спасибо, переименование файлов .m, которые импортируют код C++ в .mm, разрешило мою проблему :) – chunkyguy

0

В XCode 4.2 вы также можете изменить тип отдельных файлов, используя параметр «Тип файла» в инспекторе «Идентификация и тип» на правой панели. Я бы предложил изучить это, если только с конкретными файлами заголовков, с которыми вы столкнулись. Может быть, изменить тип от заголовка Objective C до заголовка C++?

+0

Да, я уже сделал это без помощи – chunkyguy

Смежные вопросы