Custom Framework с использованием статического lib - Включение немодульного заголовка в модуль фреймворка Xcode 9 - PullRequest
0 голосов
/ 30 августа 2018

Я видел множество ответов о проблеме, но ни один из них не основан на моем случае, и "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), который я начал внедрять и тестировать. Единственным отличием было наличие соединительного заголовка.

Есть идеи?

1 Ответ

0 голосов
/ 31 августа 2018

Через некоторое время после исследования я нашел проблему и решение

Когда я #include "OpenHome/Net/C/CpUpnpOrgConnectionManager1.h", этот заголовок либо не является общедоступным, либо содержит непубличные заголовки.

Решение для импорта этих заголовков в среде на основе Swift состоит в том, чтобы создать Модуль.

Я создал папку "MyModuleFolder" в моей целевой папке и создал внутри файл "module.modulemap", который выглядит как

module OHNet[system]{

    header "MyHeaders.hpp"

    export *

}

После этого в «Настройках сборки» -> «Компилятор Swift - Пути поиска» -> «Пути импорта» я добавил местоположение для «MyModuleFolder».

Наконец,

import OHNet

в каждом файле swift

Надеюсь, это поможет.

...