2015-06-08 99 views
18

未定义的符号我试图安装谷歌地图SDK,我通过这个错误运行时,运行:GoogleMapsSDK:用于建筑x86_64的

Undefined symbols for architecture x86_64: 
    "_CBAdvertisementDataManufacturerDataKey", referenced from: 
     -[GMSx_PEBeaconScanner centralManager:didDiscoverPeripheral:advertisementData:RSSI:] in GoogleMaps(PEBeaconScanner.o) 
    "_CBAdvertisementDataServiceDataKey", referenced from: 
     -[GMSx_PEBeaconScanner centralManager:didDiscoverPeripheral:advertisementData:RSSI:] in GoogleMaps(PEBeaconScanner.o) 
    "_CBCentralManagerScanOptionAllowDuplicatesKey", referenced from: 
     -[GMSx_PEBeaconScanner scanIfAppropriate] in GoogleMaps(PEBeaconScanner.o) 
    "_OBJC_CLASS_$_CBCentralManager", referenced from: 
     objc-class-ref in GoogleMaps(PEBeaconScanner.o) 
    "_OBJC_CLASS_$_CBUUID", referenced from: 
     objc-class-ref in GoogleMaps(PEBeacon.o) 
     objc-class-ref in GoogleMaps(PEBeaconScanner.o) 
    "_vImageBoxConvolve_Planar8", referenced from: 
     (anonymous namespace)::CreateBlurredImage(CGImage*, double, double) in GoogleMaps(GLWaterGroup.o) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

回答

4

它看起来像谷歌的API需要CoreBluetooth信标位置。在构建阶段与CoreBluetooth.framework链接,一切都应该没问题。

enter image description here

编辑: 确保通过这些说明安装谷歌地图,以避免任何问题:https://developers.google.com/maps/documentation/ios/start

+2

谢谢昆汀。 我只是做了这一点,不幸的是它送到另一个错误: 用于建筑x86_64的未定义符号: “_vImageBoxConvolve_Planar8”,从引用: (匿名命名空间):: CreateBlurredImage(CGImage *,双,双)在谷歌地图(GLWaterGroup。 o) ld:找不到x86_64体系结构的符号 clang:error:linker命令失败,退出代码1(使用-v查看调用) – STo

+0

您应该按照以下说明来确保您需要的所有内容都已安装: https://developers.google.com/maps/documentation/ios/start –

+0

是的这些说明吸IMO,无处它提到CoreBluetooth那里。 – funkybro

2

我有同样的问题,在我的情况,我有GoogleMap.framework的2个参考,我删除了旧的框架参考和问题得到解决:)

  • 点击项目
  • 构建阶段 - >链接二进制与图书馆 - >检查任何重复引用本作GoogleMaps.framework
  • 如果是,那么删除一个,你未添加。
+0

谢谢!检查重复的参考资料已帮助我! –

41

我注意到以下变化时,我升级了使用已被手动安装旧的谷歌地图SDK的应用:

  • 需要链接到CoreBluetooth.frameworkAccelerate.framework建立阶段中的 - >链接库与库。
  • “其他链接器标志”下的-all_load标志将导致“重复符号”错误。 (使用-ObjC代替。)

如果使用安装的CocoaPods方法(按他们目前的指令),就应该采取必要的框架,但它仍然得到由-all_load搞砸。

+0

这节省了我很多时间.. +1这一个。 – g212gs

+0

为什么不能谷歌文档!谢谢,我的朋友! – kamyFC

2
**_vImageBoxConvolve_Planar8, referenced from: (anonymous namespace)::CreateBlurredImage(CGImage*, double, double) in GoogleMaps(GLWaterGroup.o)** 

This required "Accelerate.framework". So, please add it. 

Steps: 
1)Build Phases -> Link Bundle with Libraries. 
2)Click "+", 
3)Select "Accelerate.framework". Finish. 
8
**_vImageBoxConvolve_Planar8, referenced from: (anonymous namespace)::CreateBlurredImage(CGImage*, double, double) in GoogleMaps(GLWaterGroup.o)** 

This required "Accelerate.framework". So, please add it. 

Steps: 
1)Build Phases -> Link Bundle with Libraries. 
2)Click "+", 
3)Select "Accelerate.framework". Finish. 

=================================== 

Others errors required "CoreBluetooth.framework. So, please add it also in similar way. 
+0

你让我的一天Arun +1 – satheesh

9

化妆确保以下包括

Google地图SDK框架和捆绑

谷歌地图(含.framework扩展)存在于你的根目录下(在您.xcodeproj是)

GoogleMaps(带有.bundle扩展名)被引用在Xcode项目

以下框架

加快。框架

AVFoundation.framework

CoreBluetooth.framework

CoreData.framework

CoreGraphics.framework

CoreLocation.framework

CoreText.framework

GLKit .framework

ImageIO.framework

的libC++。dylib

libicucore.dylib

libz.dylib

OpenGLES.framework

QuartzCore.framework

安全。框架

SystemConfiguration.framework

构建设置

建筑价值在您的项目设置包括ARMv7的。

有-ObjC,如果不存在其他链接标志添加它

+0

没有CocoaPods就完美无缺。 。非常感谢你 。 .. – iHart

+0

如果我不能使用-ObjC标志怎么办?我需要它的谷歌地图,但它会导致与解析框架的冲突。任何帮助?使用-force_load会导致符号重复... – SKYnine

+0

哪个sdk版本用于Google地图..? –

0

删除-all_load的国旗(Targets->构建设置 - >其他连接器参数),而使用可可豆荚解决了我的问题。

+0

也为我工作,而*不*使用可可豆荚 –

相关问题