8

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

“ld:警告:为 iOS 模拟器链接 ObjC,但为 MacOSX 编译了目标文件 (/Documents/Projects/Project/Utility/ZBarSDK/libzbar.a(ZBarReaderViewController.o))”

4

4 回答 4

40

构建 ZBar 库

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

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

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

下载并安装 Mercurial for Mac。我为 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 的菜单中,选择“Product > Scheme > libzbar”,然后选择“Product > Scheme > Edit Scheme...”。(您会收到一条警报,告诉您项目已更新为使用 LLBD 调试器。耶!)

第 1 步:编辑方案

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

接下来,我们将为设备和模拟器编译 libzbar。在 Project and Targets 列表中,选择 libzbar 目标并单击 Build Settings 选项卡。验证您的架构设置,如屏幕截图所示。(确保它显示 iOS 和 arm64 armv7 armv7s。)

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

第 2 步:配置架构

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

步骤 3:配置部署目标

验证您的设置并根据需要更改任何设置后,运行 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 更新了它们。

于 2013-09-21T21:28:35.420 回答
2

自 2014 年 12 月以来,有一个比马里奥的答案更简单的解决方案。使用CocoaPods并将这一行添加到您的 Podfile 中:

pod 'ZBarSDK', '~> 1.3.1'

然后,运行经典pod install. 它将构建良好,包括 arm64。

于 2018-03-18T16:43:56.907 回答
1

我通过将“仅构建活动架构”更改为“是”来绕过错误,不仅是为了调试,也是为了发布......至少现在,这救了我。

于 2014-04-10T17:48:46.577 回答
-2

ZBarSDK-1.3.1 BETA 无需重建即可修复问题。

只需下载 ZBarSDK-1.3.1.dmg 映像,从您的项目中删除 ZBarSDK 文件夹,并将其替换为最后一个:http: //sourceforge.net/projects/zbar/files/iPhoneSDK/beta/

于 2013-10-07T12:14:21.417 回答