Я начинаю ломать голову над этим, поэтому пришло время опубликовать здесь!
У меня есть проект C ++ в XCode, построенный как инструмент командной строки.Все файлы .cpp были переименованы в .mm, есть один .hh и несколько .h заголовков.Я указал «Скомпилировать источники как -> Objective-C ++» в настройках сборки.
У меня есть другой проект XCode для приложения для iOS.Для этого установлено значение «Компилировать источники как -> в соответствии с типом файла».Я не могу настроить его так, чтобы все компилировалось как Objective-C ++, поскольку некоторые части проекта не будут компилироваться как Obj-C ++.
В приложении iOS есть один класс, в котором я хочу использовать свой проект C ++и состоит из файлов MyClass.hh, MyClass.mm;они были просто .h и .m, но я переименовал их в надежде решить эту проблему.
Я перетащил свой проект cpp в проект iOS.Затем я добавил целевую зависимость на этапах сборки iOS, чтобы указать на приложение CLI cpp.
В MyClass.hh у меня есть
#include "../path/to/CppProject/ImportAll.h"
.., который является последовательным файлом заголовка, который последовательно 'Все заголовки include из проекта cpp.Затем я занимаюсь своими делами, создавая одно свойство в MyClass.hh, которое является указателем на объект cpp, и различные ссылки в классах MyClass.mm на классы cpp.Я получаю массу сообщений, относящихся к моим классам cpp, например:
MyCPPFile.h:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
Разве компилятор не распознает, что MyClass.hh - это Objective-C ++, а не Objective-C?Должен ли я иметь целевую зависимость, которая является библиотекой, а не указывать на это приложение CLI, возможно?
Я некоторое время гуглял, пытаясь решить проблему.Я видел ссылки на людей, использующих
#ifdef __cplusplus
, или же им приходится переименовывать файлы в .mm, чтобы все заработало, но в других случаях люди просто говорят, что перетаскивают проекты без проблем.
Может кто-нибудь, пожалуйста, просветить меня и объяснить, какие ключевые шаги я должен выполнить, чтобы сделать эту работу?Я был бы очень благодарен!Спасибо.