构建 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 平台添加的一些步骤。
Download 并安装 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 调试器。耶!)
在构建配置中选择“运行”并单击“确定”。
接下来,我们将为设备和模拟器编译 libzbar。在 Project and Targets 列表中,选择 libzbar 目标并单击 Build Settings 选项卡。验证您的架构设置,如屏幕截图所示。 (确保它显示 iOS 和 arm64 armv7 armv7s。)
另外,不要忘记将架构更改为标准架构(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。