Использование статической библиотеки

У меня есть статическая библиотека, в которой есть еще одна статическая библиотека.
Давайте назовем их 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)

Я убедился, что и LibA, и LibB созданы для архитектуры x86_64.
Любая помощь очень ценится.

Изменить: я смог решить эту проблему. На этапах сборки мне пришлось добавить UIKit.framework в двоичный файл Link with Libraries. Это исправило ошибки и позволило мне использовать мою библиотеку. Спасибо вам за помощь!


person Patrick Doherty    schedule 21.10.2016    source источник
comment
Символы, на которые он жалуется, взяты из UIKit. Я предполагаю, что это связано с вашим реальным приложением, а не с вашими библиотеками.   -  person Phillip Mills    schedule 21.10.2016
comment
Удалите производные данные из ~/Library/Developer/Xcode/DerivedData/, а затем очистите, соберите заново. Надеюсь, что это работает.   -  person Jamshed Alam    schedule 21.10.2016
comment
Похоже, что UIKit не связан с проектом. Убедитесь, что он связан с большим проектом, или удалите зависимости из связанной библиотеки. Я настоятельно рекомендую перейти на динамические фреймворки.   -  person Leo Natan    schedule 21.10.2016
comment
Я попытался удалить папку DerivedData, но, к сожалению, это не помогло. Я закомментировал все, что ссылается на мою библиотеку, и ошибки все еще там, поэтому кажется, что это проблема. Любые идеи о том, как это исправить?   -  person Patrick Doherty    schedule 21.10.2016
comment
Если ваша библиотека статически скомпонована и имеет внутренний доступ к UIResponder или UIViewController, компоновщик потерпит неудачу. Добавьте UIKit.framework к цели вашего приложения.   -  person Leo Natan    schedule 21.10.2016
comment
@PatrickDoherty Добавлено как ответ. Пожалуйста, примите, если это помогло вам.   -  person Leo Natan    schedule 21.10.2016


Ответы (1)


Добавьте UIKit.framework к цели вашего приложения.

person Leo Natan    schedule 21.10.2016