将ZBar Sdk集成到项目中后,我的xcode 5-DP开始显示以下警告:

最佳答案

构建ZBar库

有时,我在ZBar上遇到了另一个问题,并在此处找到了一组有用的说明:https://web.archive.org/web/20170128181158/http://www.federicocappelli.net/2012/10/05/zbar-library-for-iphone-5-armv7s/

基本上,这些说明告诉您如何使用Mercurial checkout 源代码,然后编译自己的libzbar.a文件。这应该可以解决您的问题。

实际上,就在昨晚,我最终不得不再次按照说明进行操作,因为我的ZBar版本在更新为Xcode 5后将无法运行。我鼓励您按照上面的链接进行操作,但是我将在很大程度上对其进行说明。在这里,以及为新iPhone平台添加的一些步骤。

Download并安装Mac版Mercurial。我为OS X 10.8选择了最新的版本。 (当您启动安装程序时,安装屏幕似乎仍然显示10.7,因此请不要感到惊讶。)

安装Mercurial之后,使用以下命令下载ZBar的源代码:

    hg clone http://zbar.hg.sourceforge.net:8000/hgroot/zbar/zbar
    cd zbar
    hg checkout iPhoneSDK-1.3.1
    open iphone/zbar.xcodeproj

在Xcode的菜单中,选择“产品>方案> libzbar”,然后选择“产品>方案>编辑方案…”。 (您将收到一条警报,通知您该项目已更新为使用LLBD调试器。是的!)

在构建配置中选择“运行”,然后单击“确定”。

接下来,我们将同时为设备和模拟器编译libzbar。在“项目和目标”列表中,选择libzbar目标,然后单击“build设置”选项卡。验证您的体系结构设置,如屏幕截图所示。 (确保它说的是iOS和arm64 armv7 armv7s。)

另外,不要忘记将Architectures更改为标准体系结构(armv7,armv7s,arm64),否则您的项目将无法使用arm64进行编译。 (这没有在屏幕截图上正确显示)

现在,这是我昨晚发现的部分。我的部署目标设置为iOS 3.1。如果尝试使用该设置在Xcode 5中进行编译,则会收到错误消息。我将其更改为iOS 7.0。

验证设置并根据需要更改任何设置后,运行Build。返回“产品>方案>编辑方案…”,然后检查“目标”下拉菜单。 (请参阅上面的屏幕截图。)我在iPhone Retina(3.5英寸)上安装了我的手机。将其更改为iOS设备并再次运行Build。现在,您已经两次构建了该库:一次用于模拟器,一次用于设备。您需要结合这两个库。转到终端中的以下目录:
    cd ~/Library/Developer/Xcode/DerivedData

在其中有一堆名称不明确的目录,其中一个目录将以“zbar”开头。这是我的完整路径,例如:
    /Users/mario/Library/Developer/Xcode/DerivedData/zbar-dwpkaidpztsnjafveraeowkkjvdo

进入该zbar目录,然后转到Build/Products目录。
    cd Build
    cd Products

在那里,您将看到两个文件夹:Release-iphoneos和Release-iphonesimulator。 (每个文件内部都有一个lizbar.a文件。)将它们与以下命令组合:
    lipo -create Release-iphoneos/libzbar.a Release-iphonesimulator/libzbar.a -o libzbar.a

现在,您已经创建了应该使用的通用库(libzbar.a),以替换ZBar发行版随附的库。它位于同一Build/Product目录中。

正如我已经说过的,我很大程度上是在上面链接的作者Cappelli先生的指导下进行的,将其更新为最新的Xcode。

关于ios - Xcode 5中libzbar.a的链接器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18740304/

10-09 06:10