2012-03-25 2 views
9

Я строю iOS, проект сканера кода, используя ZBar SDK. Я пытаюсь создать свой проект непосредственно из источника ZBar, вместо того, чтобы включать старую библиотеку libzbar.a.Как построить ZBar SDK с проектом вместо использования статической библиотеки?

Я загрузил источник ZBar, который включает проект XCode для сборки libzbar.a. Я попытался скопировать все исходные файлы из проекта, но это не сработало. Я продолжаю получать неопределенные ошибки символов.

Какие исходные файлы должны быть включены, учитывая, что мне нужно поддерживать только iOS?

Если структура папок строго соблюдается, чтобы построить проект?

Может возникнуть необходимость в настройках сборки, если я буду включать исходные файлы?

EDIT: Я следил за той же структурой папок и настройками сборки, которые использовались в проекте XCode libzbar. Мне удалось создать библиотеку, но она все еще не работает при связывании. Я получаю ошибку: ld: duplicate symbol _OBJC_METACLASS для всех исходных файлов. Я дважды проверял, нет ссылок на исходную библиотеку libzbar.a в проекте или более одного вхождения этих исходных файлов. Если я удалю ссылки для них, проект будет строптивым, но затем не удастся всякий раз, когда ссылаются на какой-либо символ из библиотеки. Я думаю, что я все еще что-то пропустил !!

+0

Zbar является проектом с открытым исходным кодом, распределяется как статическая библиотека только для упрощения интеграции, нет t, потому что разработчики не хотят, чтобы люди видели исходный код. Фактически, если вы проходите через сайт проекта, ссылка для загрузки источника находится чуть ниже ссылки для загрузки статической библиотеки. – Vin

+0

Какие ошибки вы получили? – rakeshNS

+0

@rakeshNS все ошибки являются либо отсутствующими заголовочными файлами, либо неопределенными символами. – Vin

ответ

3

Я наконец решил эту проблему. Вот шаги, которые я сделал:

1) Скопировали исходные файлы проекта в мой проект.

2) Удалена зависимость libzbar.a от моего проекта.

3) Добавлен путь к папке, содержащей источник и заголовки, в настройку построения Header Search Paths проекта.

4) Добавлена ​​следующая определенный пользователь сборка установки для проекта:

EXCLUDE_SOURCE_FILE_NAMES
GCC_MODEL_TUNING
предварительного связывание и
USE_HEADERMAP

+0

Где вы загружали исходный код? какие классы мне нужно включить? – Dejell

+0

@Odelya исходный код доступен по адресу http://sourceforge.net/projects/zbar/. Я включил все классы из исходного кода. – Vin

0

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

После загрузки файла зип из репозитория Mercurial по умолчанию и открыть файл в Xcode, нажмите на части «EmbedReader» целевого выбора выпадающего списка и переключиться на «zBarSDK»

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

+0

Спасибо за ваш ответ Lefteris, но эта часть совершенно очевидна. Я планирую внести некоторые существенные изменения в код и хочу, чтобы код был легко поддерживаемым другими разработчиками в будущем. Изменение кода непосредственно в проекте, если это необходимо, представляется мне лучшим вариантом, чем открытие отдельного проекта, внесение изменений, сборка библиотеки и последующее включение в основной проект. – Vin

-1

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

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

+0

Спасибо за ваш ответ Alivig, но каким-то образом zxing не соответствует моим требованиям. Я должен использовать только zbar. – Vin