Невозможно импортировать IOKit в платформу iOS.IOS

Программируем под IOS
Anonymous
Невозможно импортировать IOKit в платформу iOS.

Сообщение Anonymous »

Я написал драйвер DriverKit для iPadOS для USB-устройства. Все работает нормально. Я пытаюсь упаковать код приложения в SDK для него в рамках. Фреймворк включает в себя как Swift, так и C/Objective-C. Основной код, создающий класс для взаимодействия с драйвером, — это Swift, но есть некоторые заголовки в стиле C, в том числе те, которые используются совместно с целевым драйвером, в основном для общих типов данных (перечисления и структуры).
И код Swift, и C/Objective-C используют API и типы IOKit.
Проблема, с которой я столкнулся, заключается в том, что IOKit не является модульным в iPadOS, и таким образом, его нельзя импортировать непосредственно в Swift, ни в стандартной структуре определения модуля. В цели приложения (а не в цели платформы) это можно обойти, импортировав в заголовок моста. Эквивалентом этого в фреймворке может быть импорт IOKit в зонтичный заголовок, который фактически служит связующим заголовком в фреймворке. Однако это вызывает ошибку «включение немодульного заголовка в модуль фреймворка...».
Моей первой мыслью было включить настройку сборки CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES. Включение этого параметра не приводит к исчезновению ошибки.
Моей следующей мыслью было отключить параметр DEFINES_MODULE, но это имело два ломающих эффекта:
  • Фреймворк невозможно импортировать в код Swift (например, в приложение), поскольку он больше не определяет модуль.
  • Фреймворк все еще не компилируется, поскольку собственный код Swift фреймворка больше не компилируется. видит любой из мостовых типов, импортированных в зонтичный заголовок.
Кто-нибудь сталкивался и решал эту проблему? Короче говоря, есть ли способ создать структуру, которая импортирует IOKit в iPadOS и сама импортируется в Swift?

Подробнее здесь: https://stackoverflow.com/questions/780 ... -framework

Вернуться в «IOS»