Приложение Swift: "Отсутствует необходимый модуль" при импорте инфраструктуры, которая импортирует статическую библиотеку

Вот мои настройки:

  1. Статическая библиотека кода Objective C называется Stat,
  2. Фреймворк Swift, использующий код из Stat в своих собственных классах (эта структура называется Dyn). Статическая библиотека и этот фреймворк находятся в одном проекте XCode.
  3. Приложение / проект 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.

Другие вопросы по тегам