Zbar SDK не работает в iOS6

Я использовал ZBar для сканирования в iOS5, и он работал хорошо.

Теперь после обновления до iOS6 не работает. Это показывает следующую ошибку.

    ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /Users/mac4/Desktop/my desktop/My app/MyApp name 20:09:12  /MyApp name/ZBarSDK/libzbar.a for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Что не так на моей стороне?

Ответы на вопрос(9)

У меня та же проблема, но я только добавилarmv6 а такжеarmv7 тогда это работает для iOS6. Просто вставьтеarmv6.

Клонируйте репозиторий Mercurial и постройте с помощью Xcode. Это очень легко. Вот ссылка на репозиторий:

http://zbar.hg.sourceforge.net/hgweb/zbar/iphone/summary

В Xcode, перейдите к настройкам вашей цели, изменить & apos;Valid Architectures& APOS;

от

armv7,armv7s

в

armv7

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

 25 мая 2013 г., 18:38
Это сработало для меня, но только после того, как я установил версию на iOS 6.0 - она все равно не будет собираться для 6.1
 01 февр. 2013 г., 17:03
Как отмечено в комментариях к отдельному ответу, подходящий способ решить эту проблему - скомпилировать библиотеку для включения правильной архитектуры. Инструкции и загружаемый пакет находятся по адресуfedericocappelli.net/2012/10/05/…
 26 дек. 2013 г., 12:23
@marimba не работает для меня, я использую xcode 4.6, а устройство - iphone5.
 22 февр. 2013 г., 16:45
Адрианц, вы правы, компиляция библиотеки является подходящим способом - если вы знаете, что делаете. Но мы говорим о библиотеке, которая: 1) не улучшена для armv7s, поэтому перекомпиляция просто добавит правильный флаг, ничего не меняя 2) сложный кусок кода с множеством целей и переключателей и 3) вероятно, очень скоро выйдет с соответствующая поддержка v7s в любом случае. Хотите ли вы скомпилировать библиотеку со всеми возможными известными и неизвестными проблемами для себя, вместо того, чтобы ждать, пока сопровождающие сделают то же самое, и, тем временем, использование этого ярлыка зависит от вас.
 22 февр. 2013 г., 16:42
Каппе, это не правда. armv7s - это расширенный набор armv7, поэтому все, что работает на armv7, должно работать и на v7s. Если библиотека будет содержать код, который использует функции armv7s (т.е. для повышения скорости), вы потеряете эти функции. Только если библиотека будет работатьonly на v7s у вас будет проблема.
Решение Вопроса

Я недавно столкнулся с той же проблемой. Кажется, проблема в том, что ZBar SDK не готов к архитектуре armv7s.

Я решил проблему следующим образом:

Go to the ZBar homepage and navigate to the mercurial repository (direct link) Download the zbar repository as zip. Unzip the file and navigate to the subfolder named "iphone". Open the XCode project. Delete the "Examples" folder (the folder caused a build error on my machine). Hit "CMD + B" and build the source. Find your new libzbar.a file. (User/Library/Developer/Xcode/DerivedData/zbar...) Replace the old libzbar.a file in your project with the new one. Hit "CMD + R" and you are good to go.
 06 нояб. 2013 г., 11:15
Это работает. Просто одна вещь, когда вы переходите по прямой ссылке, нажмите «Код», а не «iPhone» и нажмите «Загрузить снимок». Остальные инструкции работают отлично. Спасибо.
 08 нояб. 2012 г., 10:24
Это работало при запуске на устройстве или симуляторе. Когда вы пытаетесь собрать продукт, я все равно получаю эту ошибку. & Quot; _OBJC_CLASS _ $ _ ZBarReaderController & Quot ;, ссылки из: ObjC класса-ссылок в DealElementDisplayController.o & Quot; _ZBarReaderControllerResults & Quot ;, ссылки из: - [DealElementDisplayController imagePickerController: didFinishPickingMediaWithInfo:] в DealElementDisplayController.o LD: Символ (ы) не найдено для архитектуры ARMv7
 26 нояб. 2012 г., 17:31
@kgibbon Вы правы. Если вы идете с этим уроком (federicocappelli.net/2012/10/05/…) это будет работать просто отлично. Ключ должен объединить выходные файлы.

Пришел сюда с той же проблемой после загрузки учебного кода RDC, предоставленного в его блоге. Очень полезный пост, но самый полезный ответ здесь опубликовал RacZo 3/29. Я только что загрузил исходный образ ZBarSDK-1.3.1.dmg, удалил ZBarSDK из моего проекта и заменил его оригиналом. Готово.

ваша двоичная библиотека не имеет кода для armv7s. Таким образом, вы должны перекомпилировать его для текущих архитектур.

Я изучаю разработку IOS. После нескольких дней копания,

Здесьруководство для установки ZBar SDK.

1, принятый ответ правильный, но с некоторыми ограничениями. (попробовал, работает!)

2, альтернативное решениеВот, (попробовал, работает!)

3. Лучше всего построить все разные архитектуры, а затем связать их с помощью lipo:Отличное решение (попробовал, гениально!)

Некоторые чтения для понимания этих архитектур:

http://wanderingcoder.net/2010/07/19/ought-arm/

http://wanderingcoder.net/2011/09/25/compiling-armv7/

Учебное пособие по загрузке / повторной компиляции hg sources великолепно, но вам не нужно все это делать.

Просто перейдите кhttp://sourceforge.net/projects/zbar/files/iPhoneSDK/beta/ и загрузите ZBarSDK-1.3.1.dmg, и все будет работать из коробки для последних архитектур (в моем случае armv7, armv7s).

Update:

Некоторые из вас сообщали о проблемах с ZBarSDK на XCode 5, iOS 7 или архитектурах arm64 ... хорошо, я вернулся к этому проекту сегодня и столкнулся с похожими проблемами и обнаружил, что есть библиотека ZBarSDK, скомпилированная для работы с iOS 7 по адресу:http://www.nerdvision.net/app-development/ios/zbar-sdk, Я просто заменил старые файлы новыми, и мой проект скомпилирован. Обратите внимание, что для архитектур в моих настройках сборки для моего проекта задано значение amrv7, arm64 ($ ARCHS_STANDARD), для базового SDK установлен iOS 8.0, а для флага «Только сборка активных архитектур» установлено значение «Да».

Здесь, в SO, есть вопрос по этому поводу:zbar SDK не работает для armv7s (iPad 4, iOS 7)

Спасибо @cdescours за подсказку!

 08 дек. 2013 г., 09:10
Большое спасибо @RacZo :).
 30 июн. 2014 г., 06:29
После добавления этого я начинаю получать ошибку об отсутствии архитектуры arm64.
 10 июн. 2013 г., 02:59
На самом деле самый простой способ - просто перетащить файл и заменить libzbar.a новым.
 25 июн. 2013 г., 07:34
ИМХО Это должен был быть ответ
 06 янв. 2014 г., 21:56
Это должен был быть ответ +1 от меня спасибо

Перекомпилируя исходный код, я загружаю исходный код для zbar и компилирую в новый проект. Это просто.

Ваш ответ на вопрос