Статическая библиотека со сторонним фреймворком

Я пытаюсь создать статическую библиотеку, использующую стороннюю структуру. Он построен успешно.

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

Почему приложение Sample запрашивает этот фреймворк, если он уже используется внутри статической библиотеки?


person chandvoid    schedule 04.10.2013    source источник
comment
Включили ли вы заголовки из фреймворка в свой пример приложения?   -  person borrrden    schedule 04.10.2013
comment
Да, я добавил заголовок своего собственного фреймворка в пример приложения, но не заголовок стороннего фреймворка, потому что мой фреймворк использует этот сторонний фреймворк для внутреннего использования. Если я не включаю сторонний фреймворк в свой пример приложения, это дает мне ошибки компиляции для сторонних классов. Для получения дополнительной информации я использую флаг компоновщика -all_load в моем проекте статической библиотеки, а также в моем примере проекта приложения.   -  person chandvoid    schedule 04.10.2013


Ответы (2)


если вы не использовали «код» lib (стороннего) во время компиляции и использовали только файлы .h и .a, то ваша библиотека зависит от исполняемого кода от другой статической библиотеки и, следовательно, она потребуется.

единственный способ удалить зависимость - скомпилировать источник зависимой (сторонней) статической библиотеки с кодом вашей статической библиотеки, чтобы библиотека была сгенерирована с исполняемым кодом зависимой библиотеки.

person Saurabh Passolia    schedule 04.10.2013
comment
При компиляции отображается следующая ошибка: Неопределенные символы для архитектуры i386: _OBJC_CLASS_$_ThirdPartyCalss, на которые ссылается: objc-class-ref в MyStaticLib (SomeClass.o) - person chandvoid; 04.10.2013

Я не знаю, будет ли это кому-то.... но перейдите в BuildSettings -> Architectuers -> Under BuildActiveArchitecture Only, установите НЕТ, а затем создайте библиотеку.

person user3445228    schedule 09.06.2014