用于libzbar.a的Xcode 5中的链接器错误

Pan*_*tel 8 iphone ios zbar-sdk ios7 xcode5

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

"ld:警告:链接ObjC for iOS Simulator,但是对象文件(/Documents/Projects/Project/Utility/ZBarSDK/libzbar.a(ZBarReaderViewController.o))是为MacOSX编译的"

Mar*_*rio 39

构建ZBar库

不久之后,我遇到了与ZBar不同的问题,并在此处引出了一组有用的说明:https://web.archive.org/web/20170128181158/http: //www.federicocappelli.net/2012/10/05/ zbar和库换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 
Run Code Online (Sandbox Code Playgroud)

在Xcode的菜单中,选择"Product> Scheme> libzbar",然后选择"Product> Scheme> Edit Scheme ...".(您将收到一条警告,告诉您项目已更新为使用LLBD调试器.是的!)

第1步:编辑方案

在构建配置中选择"运行",然后单击"确定".

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

另外,不要忘记更改架构,以标准架构(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
Run Code Online (Sandbox Code Playgroud)

在那里有一堆密码命名的目录,其中一个将开始"zbar".这是我的完整路径,作为一个例子:

    /Users/mario/Library/Developer/Xcode/DerivedData/zbar-dwpkaidpztsnjafveraeowkkjvdo
Run Code Online (Sandbox Code Playgroud)

进入该zbar目录,然后切换到Build/Products目录.

    cd Build
    cd Products
Run Code Online (Sandbox Code Playgroud)

在那里你会看到两个文件夹:Release-iphoneos和Release-iphonesimulator.(每个内部都是一个lizbar.a文件.)将它们与以下命令结合使用:

    lipo -create Release-iphoneos/libzbar.a Release-iphonesimulator/libzbar.a -o libzbar.a 
Run Code Online (Sandbox Code Playgroud)

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

正如我所说,我基本上已经完成了上述链接作者Cappelli先生的指示,更新了最新的Xcode.