iOS неопределенные символы eaaccessory в статической библиотеке

Я создал статическую библиотеку ios, которая в основном использует внешнюю вспомогательную среду для общения с пользовательским устройством Bluetooth, я использую iOS 7 + Xcode 5. Когда я пытаюсь использовать эту библиотеку в своем тестовом проекте, я получаю ошибки компоновщика для неизвестных символов eaaccessory, Если я добавлю eaaccessory framework в мой тестовый проект, то все будет работать как положено.

Мне было интересно, можем ли мы встроить eaaccessory framework в нашу статическую библиотеку? Так что пользователям нашей библиотеки не нужно добавлять eaaccessory framework в свои проекты.

Еще одна странная вещь, которую я заметил, это то, что моя статическая библиотека прекрасно компилируется и связывается даже без добавления eaaccessory framework в мой библиотечный проект.

Наконец, моя проблема заключается в том, что мне нужно добавить eaaccessory framework в мой тестовый проект для правильной связи, независимо от того, добавляю я eaaccessory в мой библиотечный проект или нет.

2 ответа

Нет. Предоставляемые Apple библиотеки динамически связаны и не могут быть статически скомпилированы в ваш проект.

Когда компоновщик создает статическую библиотеку, он не должен разрешать все символы в библиотеке. Если вы свяжетесь со статической библиотекой, она импортирует символы из этой библиотеки в библиотеку, которую она строит. Он не будет импортировать символы из инфраструктуры, так как они предназначены для динамической загрузки во время выполнения.

Вы не можете встраивать части системной инфраструктуры в вашу статическую библиотеку. Вполне может быть, что импорт функций из системной инфраструктуры в статическую библиотеку вместо загрузки их во время выполнения приведет к их поломке.

Другие вопросы по тегам