У меня странная проблема в рабочем пространстве XCode. У меня нет большого опыта ни в Objective-C, ни в C / C ++. В основном я работаю с Unity3D / C #.
В настоящее время я пытаюсь создать несколько собственных плагинов для игры для iOS, для того же самого я создал несколько Cocoa touch Framework
в одной рабочей области XCode, скажем, у меня есть четыре проекта в рабочей области.
- Проект A
- Проект B
- Проект C
- Проект D
Все проекты имеют одинаковую конфигурацию проекта (например, Цель развертывания, Архитектура, Базовая ОС и т. Д.)
Теперь Проект A является общей структурой, которая используется другими 3-мя проектами с несколькими общими задачами, такими как
- Общайся обратно с единством
- Получение строки C из NSString и наоборот
- Создать строку данных JSON из NSObject или NSDictionary
Все эти методы записаны с Objective-C
в .mm
файле. в том же файле также записан C
код моста для доступа через other-custom-framework / код Unity через `extern" C ".
Файл .h
имеет объявление тех же методов Objective-C
в соответствующем интерфейсе и C
в extern C
.
Эта установка прекрасно работает без каких-либо проблем / ошибок в Проекте B, Проекте C, Проекте D.
Эта проблема возникает только с extern "C"
с новым проектом "Какао Touch Framework" "Project E", созданным сегодня.
Когда я пытаюсь построить проект E, выдается ошибка в заголовочном файле проекта A в строке, где extern "C"
.
error: expected identifier or '(' extern "C" {
Когда я пытаюсь построить любые другие 3 проекта, все работает без проблем. и отлично работают как фреймворки в играх на базе Unity для iOS.
Я пытался сопоставить настройки сборки Project E с другими проектами, но не могу найти никаких изменений.
Так что я застрял в этой странной проблеме. Я также искал в Google то же самое. Большинство сообщений указывают на использование #ifdef __cpluscplus
#ifdef __cplusplus
extern "C" {
#endif
// Method Declaration
#ifdef __cplusplus
}
#endif
это решает проблему с Проектом E, но, тем не менее, у меня не возникает реальной проблемы, почему единственная ошибка в Проекте E, а не в других Проектах.
Пожалуйста, наведите меня на то же самое.