extern "C" в framework .h работает в проекте, но не работает в других - PullRequest
0 голосов
/ 30 октября 2018

У меня странная проблема в рабочем пространстве 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, а не в других Проектах.

Пожалуйста, наведите меня на то же самое.

...