Включить немодульный заголовок при включении стороннего фреймворка в цель C - PullRequest
0 голосов
/ 15 мая 2018

Мне нужно выставить метод в моем заголовочном файле, чтобы он принимал параметр типа, полученного из стороннего фреймворка.Заглушка метода выглядит следующим образом:

- (void) onComplete:(RETURN_CODE (^)(BOOL isSuccess, NSData* tags))onComplete;

RETURN_CODE - перечисление typedef в сторонней структуре, но это не типичное определение перечисления.Это выглядит так:

typedef enum {
    RETURN_CODE_DO_SUCCESS = 0,              
    RETURN_CODE_ERR_DISCONNECT = 0xFF01,         
    RETURN_CODE_ERR_CMD_RESPONSE = 0xFF02,
    // continued...
}

Когда я пытаюсь импортировать его в свой заголовочный файл, я получаю сообщение об ошибке "Включение немодульного заголовка в модуль фреймворка"

Я получилпрежде чем использовать протокол и класс, но я не уверен, как обойти это для типа RETURN_CODE.У меня уже есть опция «Разрешить немодульные включения», установленная на «Да».И мой фреймворк, и сторонний фреймворк включены в промежуточный заголовок в моем быстром проекте.

Структура моего фреймворка такова, что Ah импортирует Ch, Am импортирует Bh, а Bh импортирует Ch Я не думаю, что это должнобыть проблемой?

Поскольку я импортирую стороннюю платформу, я не уверен, что смогу изменить ее целевое членство.Он уже включен в список «Связать двоичные файлы с библиотеками».Для lulz я перетащил его в раздел Public headers, но это не помогло.

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

1 Ответ

0 голосов
/ 15 мая 2018

Опция 1: Перейдите в заголовочный файл и измените его на общедоступный.

Change Header File

Опция 2: Перейдите в Проект> Настройки сборки> Apple LLVM 9.0 - Язык - Модули> Все немодульные включения в модули платформы = ДА

Change Build Settings

...