Как собрать 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 раньше, и он хорошо интегрировался. Он был включен как проект, и основной проект имеет целевую зависимость для его построения перед основным проектом. Я отредактировал его источники для своих нужд и без проблем с ним работаю.

Я использовал этот урок. Это может быть полезно для ваших нужд.

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