Как собрать ZBar SDK с проектом вместо использования статической библиотеки?
Я строю iOS, проект сканера кода, используя ZBar SDK. Я пытаюсь построить свой проект непосредственно из исходного кода ZBar, а не включать статическую библиотеку libzbar.a.
Я скачал исходный код ZBar, который включает в себя проект XCode для сборки libzbar.a. Я попытался скопировать все исходные файлы из проекта, но это не сработало. Я продолжаю получать неопределенные ошибки символов.
Какие исходные файлы следует включить, учитывая, что мне нужно поддерживать только iOS?
Следует ли строго следовать структуре папок при создании проекта?
Будет ли необходимость в настройках сборки, если я напрямую включу исходные файлы?
РЕДАКТИРОВАТЬ: я следовал той же структуре папок и настройкам сборки, которые использовались в проекте XCode libzbar. Мне удалось построить библиотеку, но она все еще не работает во время компоновки. Я получаю ошибку: ld: duplicate symbol _OBJC_METACLASS
для всех исходных файлов. Я дважды проверил, нет ли в проекте ссылок на исходную статическую библиотеку libzbar.a или более одного вхождения этих исходных файлов. Если я удаляю ссылки на них, проект строится нормально, но затем терпит неудачу всякий раз, когда на любой символ из библиотеки ссылаются. Я думаю, что я все еще что-то упускаю!!
3 ответа
Я наконец решил эту проблему. Вот шаги, которые я сделал:
1) Скопировал исходные файлы проекта в мой проект.
2) Убрал зависимость libzbar.a из моего проекта.
3) Добавлен путь к папке, содержащей источник и заголовки Header Search Paths
Построить настройку проекта.
4) Добавлены следующие пользовательские настройки сборки в проект:
EXCLUDE_SOURCE_FILE_NAMES
GCC_MODEL_TUNING
ПРЕДЫДУЩАЯ и
USE_HEADERMAP
Вы должны создать статическую библиотеку самостоятельно из исходного кода, затем добавить выходную статическую библиотеку в свой проект или связать проекты вместе и принудительно создать статическую библиотеку перед сборкой проекта.
После загрузки zip-файла из репозитория Mercurial по умолчанию и открытия файла в xCode, нажмите на часть "EmbedReader" раскрывающегося списка выбора цели и переключитесь на "zBarSDK"
Как только вы переключитесь на zBarSDK, просто выполните сборку из меню продукта, и вы получите файл статической библиотеки....
Я использовал ZXing lib раньше, и он хорошо интегрировался. Он был включен как проект, и основной проект имеет целевую зависимость для его построения перед основным проектом. Я отредактировал его источники для своих нужд и без проблем с ним работаю.
Я использовал этот урок. Это может быть полезно для ваших нужд.