iOS неопределенные символы eaaccessory в статической библиотеке
Я создал статическую библиотеку ios, которая в основном использует внешнюю вспомогательную среду для общения с пользовательским устройством Bluetooth, я использую iOS 7 + Xcode 5. Когда я пытаюсь использовать эту библиотеку в своем тестовом проекте, я получаю ошибки компоновщика для неизвестных символов eaaccessory, Если я добавлю eaaccessory framework в мой тестовый проект, то все будет работать как положено.
Мне было интересно, можем ли мы встроить eaaccessory framework в нашу статическую библиотеку? Так что пользователям нашей библиотеки не нужно добавлять eaaccessory framework в свои проекты.
Еще одна странная вещь, которую я заметил, это то, что моя статическая библиотека прекрасно компилируется и связывается даже без добавления eaaccessory framework в мой библиотечный проект.
Наконец, моя проблема заключается в том, что мне нужно добавить eaaccessory framework в мой тестовый проект для правильной связи, независимо от того, добавляю я eaaccessory в мой библиотечный проект или нет.
2 ответа
Нет. Предоставляемые Apple библиотеки динамически связаны и не могут быть статически скомпилированы в ваш проект.
Когда компоновщик создает статическую библиотеку, он не должен разрешать все символы в библиотеке. Если вы свяжетесь со статической библиотекой, она импортирует символы из этой библиотеки в библиотеку, которую она строит. Он не будет импортировать символы из инфраструктуры, так как они предназначены для динамической загрузки во время выполнения.
Вы не можете встраивать части системной инфраструктуры в вашу статическую библиотеку. Вполне может быть, что импорт функций из системной инфраструктуры в статическую библиотеку вместо загрузки их во время выполнения приведет к их поломке.