Я видел множество ответов о проблеме, но ни один из них не основан на моем случае, и «ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES» также не работает.
Я разрабатываю фреймворк, который является реализацией библиотеки C. Библиотека OpenHome и после компиляции и создания толстых библиотек у меня есть папка со всеми .a и заголовками.
Поскольку у него есть папка для «Отладка» и «Выпуск», я копирую эти 2 папки в корень моего проекта, импортирую файлы .a в свой «Связать двоичный файл с библиотеками» и в «Настройках сборки» моего цель, я установил «Путь поиска заголовка» с расположением папки заголовков.
для импорта всех заголовков, которые мне нужно реализовать, я использую класс c ++ под названием «MyHeaders.hpp & MyHeader.cpp «, я делаю .hpp общедоступным и импортирую его таким образом в свой MyFramework.h (файл Umbrella):
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdocumentation"#import "MyHeaders.hpp"#pragma clang diagnostic pop
MyHeaders.hpp:
#ifndef MyHeaders_hpp
#define MyHeaders_hpp
#include <stdio.h>/*** CP -PROXIES- ***/
/** Header That Includes all the CP Related Headers **/
#include "OpenHome/Net/C/CpStack.h"
/** CP Services **/
/*UPnP*/
#include "OpenHome/Net/C/CpUpnpOrgConnectionManager1.h"#include "OpenHome/Net/C/CpUpnpOrgRenderingControl1.h"#include "OpenHome/Net/C/CpUpnpOrgAVTransport1.h"
#endif /* MyHeaders_hpp */
Ошибка происходит от каждого включения. Я заменил остроумие импорта, но это также не работает.
Стоит отметить, что эта конфигурация проекта была той, которую я использовал в проекте (Single View Application), который я начал внедрять и тестировать. Единственным отличием было наличие соединительного заголовка.
Есть идеи?
Ну а после исследования я нашел проблему и решение
Когда я #include "OpenHome/Net/C/CpUpnpOrgConnectionManager1.h"
этот заголовок либо не является общедоступным, либо содержит непубличные заголовки.
Решение для импорта этих заголовков в основе на основе Swift заключается в создании модуля.
Я создал папку «MyModuleFolder» в моей целевой папке, и я создал файл «module.modulemap» внутри, который выглядит как
module OHNet[system]{
header "MyHeaders.hpp"
export *
}
После этого в «Настройках сборки» -> «Компилятор Swift — Пути поиска» -> «Пути импорта» я добавил местоположение для «MyModuleFolder».
В заключение,
import OHNet
в каждом быстром файле
Я надеюсь, что это помогает.
Других решений пока нет …