Как уже упоминалось, Apple разрешает использовать Swift в статических библиотеках, начиная с Xcode 9 Beta 4.
Мы попытались сделать это в существующем проекте с целью на основе Objective-C и проектами статической библиотеки «дочерних» и продолжали сталкиваться с ошибкой связывания.
ld: library not found for -lswiftSwiftOnoneSupport for architecture x86_64
также
ld: library not found for -lswiftDispatch for architecture x86_64
Это связано с тем, что основная цель (приложение) пытается выполнить сборку исключительно с использованием Objective-C, и статическая библиотека не сообщает, что ей необходимо включать библиотеки Swift. Это произошло потому, что в разделе Compile Sources
нашего Build Phases
для целевого приложения не было файлов Swift.
Итак, в основном все, что вам нужно сделать, это добавить хотя бы один файл .swift
в этот список компиляции, и он будет включать в себя библиотеки Swift для вас. В нем даже не должно быть никакого кода или значений, это может быть пустой файл.
Затем вы можете начать добавлять файлы Swift в свой «дочерний» проект статической библиотеки. Я бы позволил сначала сгенерировать для вас заголовок моста, а затем вы можете перемещать его и изменять то, что импортируется (убедитесь, что проект указывает на правильный файл в настройках сборки, если вы перемещаете его).
Тем не менее, следует помнить, что использование Swift и Objective-C в пределах одной и той же статической библиотеки может иметь свои собственные проблемы. Я предлагаю прочитать документ для разработчиков Apple "Swift and Objective- C в том же проекте" о том, как решить проблему импорта Objective-C в Swift (используя связующий заголовок) и как использовать файлы Swift в коде Objective-C (импортируя сгенерированный -Swift.h
для вашей библиотеки).
person
Dean Kelly
schedule
16.11.2017