У меня есть статическая библиотека, в которой есть другая статическая библиотека.
Назовем их LibA и LibB.
LibA - это библиотека, выходящая на улицу, или, другими словами, LibA призывает LibB внутренне, а LibB не имеет внешних вызовов функций.
Заголовок LibA - extern C, так что имена не становятся искалеченными.
Я протестировал эту библиотеку с помощью Swift, и она работает безупречно.
Однако, когда я пытаюсь использовать его внутри проекта Obj-C, я получаю следующие ошибки:
Использование статической библиотеки
"_OBJC_CLASS_$_UIResponder", referenced from:
_OBJC_CLASS_$_AppDelegate in AppDelegate.o
"_OBJC_CLASS_$_UIViewController", referenced from:
_OBJC_CLASS_$_ViewController in ViewController.o
"_OBJC_METACLASS_$_UIResponder", referenced from:
_OBJC_METACLASS_$_AppDelegate in AppDelegate.o
"_OBJC_METACLASS_$_UIViewController", referenced from:
_OBJC_METACLASS_$_ViewController in ViewController.o
"_UIApplicationMain", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я убедился в том, что оба Либа и LibB построены для архитектуры x86_64.
Любая помощь очень ценится.
Редактировать: Я смог решить эту проблему. В разделе «Фазы сборки» мне пришлось добавить UIKit.framework в бинарную ссылку с библиотеками. Это фиксировало ошибки и позволило мне использовать мою Библиотеку. Спасибо вам за помощь!
Символы, на которые он жалуется, являются UIKit. Я предполагаю, что это связано с вашим фактическим приложением, а не с вашими библиотеками. –
Удалите полученные данные из ~/Library/Developer/Xcode/DerivedData /, а затем очистите, снова создайте. Надеюсь, что это работает. –
Похоже, что UIKit не связан в проекте. Смотрите, что он связан в большем проекте или удаляет зависимости из связанной библиотеки. Я настоятельно рекомендую перейти к динамическим рамкам. –