2016-10-21 5 views
1

У меня есть статическая библиотека, в которой есть другая статическая библиотека.
Назовем их 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 в бинарную ссылку с библиотеками. Это фиксировало ошибки и позволило мне использовать мою Библиотеку. Спасибо вам за помощь!

+0

Символы, на которые он жалуется, являются UIKit. Я предполагаю, что это связано с вашим фактическим приложением, а не с вашими библиотеками. –

+0

Удалите полученные данные из ~/Library/Developer/Xcode/DerivedData /, а затем очистите, снова создайте. Надеюсь, что это работает. –

+0

Похоже, что UIKit не связан в проекте. Смотрите, что он связан в большем проекте или удаляет зависимости из связанной библиотеки. Я настоятельно рекомендую перейти к динамическим рамкам. –

ответ

0

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