Xcode 5.1 - Undefined символы для архитектуры x86_64 (zbar)
Я обновил мою версию кода x от 5.0 до 5.1
Я использовал ZBarSDK для защиты сканирующего штрих-кода. В симуляторе "iPhone Retina (3,5 дюйма)" и "iPhone Retina (4 дюйма)" он отлично работает. Но когда я хочу построить симулятор iPhone Retina (4-дюймовый 64-разрядный), он дает следующую ошибку.
ld: warning: ignoring file /Users/sayan/Desktop/ProjectAtanu/Omlis/Custom Classes/ZBarSDK/libzbar.a, missing required architecture x86_64 in file /Users/sayan/Desktop/ProjectAtanu/Omlis/Custom Classes/ZBarSDK/libzbar.a (3 slices)
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_ZBarReaderViewController", referenced from:
objc-class-ref in HomeViewController.o
"_ZBarReaderControllerResults", referenced from:
-[HomeViewController imagePickerController:didFinishPickingMediaWithInfo:] in HomeViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Архитектура: стандартная архитектура (arm64, armv7, armv7s) - $(ARCHS_STANDARD)
Действительные архитектуры: arm64, armv7, armv7s
Базовый SDK: последний IOS (IOS 7.1)
Цель развертывания iOS: iOS 6.1
Любая помощь очень ценится!
Ответы
Ответ 1
ИСПОЛЬЗОВАНИЕ PODS
pod 'ZBarSDK'
ИЛИ
Перекомпилируйте ZBar для iphone 5. Вы можете скачать перекомпилированную ZBAR из здесь, чтобы пропустить следующие
Шаги
-
Загрузите исходный код (у вас должно быть Mercurial для mac):
-
Откройте терминал и выполните следующие команды
а. hg clone http://zbar.hg.sourceforge.net:8000/hgroot/zbar/zbar
б. cd zbar
с. hg checkout iPhoneSDK-1.3.1
д. открыть iphone/zbar.xcodeproj
-
В проекте xcode отредактируйте схему "libzbar" и выберите "Release in Build"
-
Перейдите к настройкам сборки, установленным после следующих архитектур:
а. Архитектуры → Стандартные архитектуры (armv7, armv72, arm64)
б. Действительные архитектуры → arm64, armv7 armv7s
-
Скомпилируйте libzbar для устройства И для симулятора , здесь конфигурация:
-
Найдите скомпилированный libzbar.a и зайдите в папку с помощью Teminal.app,
В моем случае:/Пользователи/kappe/Library/Developer/Xcode/DerivedData/zbar-gyozyrpbqzvslmfoadhqkwskcesd/Build/Products
В этой папке вы должны иметь две подпапки Release-iphoneos и Release-iphonesimulator
-
Используя инструменты командной строки xcode, создайте свою универсальную lib:
lipo -create Release-iphoneos/libzbar.a Release-iphonesimulator/libzbar.a -o libzbar.a
Теперь вы можете использовать созданный libzbar.a, как в устройстве, так и в симуляторе.
Ссылка: http://www.federicocappelli.net/2012/10/05/zbar-library-for-iphone-5-armv7s/
Ответ 2
Это означает, что библиотека не поддерживается/не построена для новой архитектуры.
Для zBar этот ответ имеет ссылку на учебник, в котором вы можете загрузить исходный код и просто обновить lib до новой архитектуры.
Обычно для стороннего сервиса. они выпустят новую библиотеку с добавленной архитектурой, поэтому обязательно проверьте их сайт для обновления SDK.
Ответ 3
Вставьте настройки сборки в "Другие флаги библиотекаря" и "Другие флаги компоновщика": $(OTHER_LDFLAGS)