iPhone - вкладывать библиотеки в проект без ошибок компоновщика? - PullRequest
3 голосов
/ 22 августа 2011

Это сводит меня с ума.

У меня есть библиотека A, которая в свою очередь включает библиотеку B. Вложенная пара библиотек используется в 5 различных проектах. Я хочу, чтобы источник для A и B был в одном месте и связал все 5 проектов с ними.

Что бы я ни делал, я получаю одну из двух ошибок:

1) Класс библиотеки B сталкивается сам с собой. Компоновщик видит указанный класс в библиотеке A, а также в библиотеке B.

2) Некоторые классы отсутствуют, поскольку компоновщик не может их найти.

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

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

У меня есть каталоги Documents / LibraryA, Documents / LibraryA / LibraryB и Documents / Project1 через Documents / Project5.

В каталоге Documents / Project1 есть символическая ссылка LibraryA, которая указывает на ../LibraryA. То же самое относится и к проектам со 2 по 5.

Пути поиска заголовков в содержащем проекте: ./LibraryA ./LibraryA/Classes/** и ./LibraryA/LibraryB/**

Пути поиска в заголовке в LibraryA: ./LibraryB/**

Пути поиска в библиотеке всегда пусты.

Ответы [ 2 ]

1 голос
/ 22 августа 2011

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

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

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

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

0 голосов
/ 22 августа 2011

Вы пытались настроить все эти проекты в соответствии с рабочим пространством XCode?проверьте этот документhttp://developer.apple.com/library/ios/#featuredarticles/XcodeConcepts/Concept-Workspace.html#//apple_ref/doc/uid/TP40009328-CH7-DontLinkElementID_1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...