Почему компоновщик связывает статические библиотеки с ошибками? IOS

У меня проблема с привязкой моей смешанной структуры языка к проекту.

1) Я создаю структуру с классами Swift и Objective-C.

2) Основная логика хранилась в файле Swift. Например, класс с методом, который вызывает NSLog ("Журнал Swift был вызван").

3) Файл Objective-C имеет класс, у которого есть метод, в котором я создаю экземпляр класса Swift и вызываю метод Swift-log.

4) Я связываю эту инфраструктуру с моим проектом Objective-C, я могу назвать все, что мне нужно в этом проекте, но когда я хочу построить этот проект, я получаю ошибку "Ошибка linker command failed with exit code 1 (use -v to see invocation) "

И предупреждения:

ld: warning: Could not find auto-linked library 'swiftFoundation'

ld: warning: Could not find auto-linked library 'swiftDarwin'

ld: warning: Could not find auto-linked library 'swiftCoreFoundation'

ld: warning: Could not find auto-linked library 'swiftCore'

ld: warning: Could not find auto-linked library 'swiftCoreGraphics'

ld: warning: Could not find auto-linked library 'swiftObjectiveC'

ld: warning: Could not find auto-linked library 'swiftDispatch'

ld: warning: Could not find auto-linked library 'swiftSwiftOnoneSupport'

Я также видел решение с импортом пустого Swift файла, но нужно было делать проект без мусора.

Ответы

Ответ 1

Очевидно, что для чисто объективных проектов c вам нужно добавить этот $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) в пути поиска библиотек вашей цели. Это сработало для меня, когда я включал библиотеку, написанную на swift, в проект в target-c

Ответ 2

  1. Откройте ios/YourAppName.xcodeproj в Xcode
  2. Щелкните правой кнопкой мыши на имени вашего приложения в Навигаторе проектов слева и выберите "Новый файл".
  3. Создайте в проекте один пустой файл Swift (убедитесь, что цель "Ваше имя приложения" выбрана при добавлении)
  4. когда Xcode спросит, нажмите Create Bridging Header и не удаляйте файл Swift. перезапустите свою сборку.

Это должно решить проблему

Ответ 3

Попробуйте обходное решение fooobar.com/questions/7254012/...

В основном просто добавьте в проект проект макетного быстрого файла и заново запустите свою сборку.

Ответ 4

В моем случае это был проект React-Native после добавления библиотеки Swift Pods. Может быть, только шаг 2 может работать:

  1. Добавление нового файла Swift и заголовка Brigde:

1) File → New → File <code>File -> New -> File</code>

2) Выберите Swift File Select <code>Swift File</code>

3) Подтвердите Create Bridging Header enter image description here

  1. Перейдите в " Build Settings и установите для Build Settings Always Embed Swift Standard Libraries значение YES Always Embed Swift Standard Libraries.

Ответ 5

Для XCode 11 бета 4 Пути поиска в библиотеке должны быть:

$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)

Ответ 6

У меня такие же ошибки при случайной компиляции проекта со снимком Swift 5.0, настроенным в настройках Xcode "Компоненты" Набор инструментов.

Ответ 7

Если вы столкнулись с этой ошибкой при использовании Xcode 11 beta 4 в сочетании с carthage, посмотрите этот обходной путь:

https://github.com/Carthage/Carthage/issues/2825

По сути, он состоит из создания xcconfig с исправлениями и внедрения их в каждую сборку.