Xcode 5.1 - 对于架构x86_64未定义符号(zbar)

12

我已经将我的x code版本从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

非常感谢任何帮助!


你解决了吗? - Noor
3个回答

31

使用Pods

pod 'ZBarSDK'

或者

为 iPhone 5 重新编译 ZBar。您可以从这里下载重新编译的 ZBAR,以跳过以下步骤:

步骤:

  1. 下载源代码(您必须具备 Mac 上的Mercurial):

  2. 打开终端并运行以下命令:

    a. hg clone http://zbar.hg.sourceforge.net:8000/hgroot/zbar/zbar

    b. cd zbar

    c. hg checkout iPhoneSDK-1.3.1

    d. open iphone/zbar.xcodeproj

  3. 在 Xcode 项目中编辑“libzbar”方案,并选择“Release”作为构建配置。

  4. 转到“Build Settings”,设置以下体系结构:

    a. Architectures - >Standard architectures(armv7,armv72,arm64)

    b. Valid Architectures -> arm64,armv7 armv7s

  5. 设备模拟器编译 libzbar,这里是配置:

  6. 找到编译好的libzbar.a并使用Teminal.app进入该文件夹,

    在我的情况下:/Users/kappe/Library/Developer/Xcode/DerivedData/zbar-gyozyrpbqzvslmfoadhqkwskcesd/Build/Products

    在此文件夹中,您应该有两个子文件夹 Release-iphoneos 和 Release-iphonesimulator。

  7. 使用 Xcode 命令行工具构建您的通用库:

    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/


1
谢谢,但为什么不直接分享结果,省去我们的麻烦呢?毕竟许可证也允许这样做。 - user1259710
5
结果:https://drive.google.com/file/d/0B-p7lFlJim9YUFh6a3ZJWlNwQUU/view?usp=sharing - Kirit Vaghela
对于步骤#5,我使用了:(从zbar / iphone文件夹中提取)xcodebuild -sdk iphoneos -configuration Release; xcodebuild -sdk iphonesimulator -configuration Release。然后是第6步。cd build - Pierre-Francoys Brousseau
如果您使用CocoaPods,这是解决方案。 - Kernelzero

2
将以下内容放入您的“其他图书管理员标志”和“其他链接器标志”构建设置中:$(OTHER_LDFLAGS)。

2
这意味着该库不支持/适用于新的架构。
对于zBar,这个答案有一个教程链接,您可以下载源代码并将库更新为新的架构。
通常第三方服务会发布添加了新架构的新库,因此请务必查看其网站以获取更新的SDK。

感谢 Kabira 的建议。 - Atanu Mondal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接