Приложение Swift: "Отсутствует необходимый модуль" при импорте инфраструктуры, которая импортирует статическую библиотеку
Вот мои настройки:
- Статическая библиотека кода Objective C называется
Stat
, - Фреймворк Swift, использующий код из
Stat
в своих собственных классах (эта структура называетсяDyn
). Статическая библиотека и этот фреймворк находятся в одном проекте XCode. - Приложение / проект Mac, в котором вышеуказанный проект является подпроектом и который связан с
Dyn
,
В моем приложении у меня есть такой код:
import Cocoa
import Dyn
...
SomeDynClass().doSomething()
Тем не менее, когда я пытаюсь скомпилировать, я получаю ошибку, когда я import Dyn
, Ошибка
error: missing required module ‘Stat'
Похоже, мое приложение может найти мой фреймворк просто отлично, но ему тоже нужно найти модуль для моей статической библиотеки?
Stat
имеет файл модуля, который довольно прост:
module Stat {
header "Stat.h"
export *
}
Я думаю, что мне нужно указать пути поиска каркаса моего приложения Mac на Stat
но я не знаю почему и не знаю как. Как мне это решить?
1 ответ
Выберите свой Target
затем перейдите в Build Settings
и установить Import Paths
в пределах Swift Compiler
- Search Paths
раздел:
${SRCROOT}/Stat
Обычно модуль будет называться так же, как библиотека, однако я не уверен, как вы настроили каталог с помощью module.map
(это можно назвать Dyn
возможно, в этом случае путь импорта будет отражать это имя.
Настройки сборки> Swift Compiler > Пути поиска:
$ {SRCROOT} / (каталог с module.map) должен разрешиться сам после того, как вы нажмете Enter или Tab.
Я получил ту же ошибку, когда в моем проекте модульных тестов, который включает пакет SQLite3. После того, как я добавляю пакет, модульные тесты всегда выдают ошибку: "Отсутствует необходимый модуль SQLiteObjc".
Я исправил это, включив и выключив "Форсировать создание информации о пакете" в настройках сборки Target Test.