Почему компоновщик связывает статические библиотеки с ошибками? 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
- Откройте ios/YourAppName.xcodeproj в Xcode
- Щелкните правой кнопкой мыши на имени вашего приложения в Навигаторе проектов слева и выберите "Новый файл".
- Создайте в проекте один пустой файл Swift (убедитесь, что цель "Ваше имя приложения" выбрана при добавлении)
- когда Xcode спросит, нажмите Create Bridging Header и не удаляйте файл Swift. перезапустите свою сборку.
Это должно решить проблему
Ответ 3
Попробуйте обходное решение fooobar.com/questions/7254012/...
В основном просто добавьте в проект проект макетного быстрого файла и заново запустите свою сборку.
Ответ 4
В моем случае это был проект React-Native после добавления библиотеки Swift Pods. Может быть, только шаг 2 может работать:
- Добавление нового файла Swift и заголовка Brigde:
1) File → New → File
2) Выберите Swift File
3) Подтвердите Create Bridging Header
- Перейдите в "
Build Settings
и установите для Build Settings
Always Embed Swift Standard Libraries
значение YES
.
Ответ 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 с исправлениями и внедрения их в каждую сборку.