Ios GoogleMapsSDK:架构x86_64的未定义符号

Ios GoogleMapsSDK:架构x86_64的未定义符号,ios,linker-errors,google-maps-sdk-ios,undefined-symbol,Ios,Linker Errors,Google Maps Sdk Ios,Undefined Symbol,我正在尝试安装Google maps SDK,运行时遇到以下错误: Undefined symbols for architecture x86_64: "_CBAdvertisementDataManufacturerDataKey", referenced from: -[GMSx_PEBeaconScanner centralManager:didDiscoverPeripheral:advertisementData:RSSI:] in GoogleMaps(PEBeac

我正在尝试安装Google maps SDK,运行时遇到以下错误:

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)

看起来谷歌的API需要核心蓝牙来定位信标。在构建阶段,链接到
corebooth.framework
,一切都会好起来

编辑:
确保按照这些说明安装GoogleMaps以避免出现任何问题:

我遇到了相同的问题,在我的情况下,我有2个GoogleMap.framework的引用,我删除了旧的框架引用并解决了问题:)

  • 点击项目
  • 构建阶段->将二进制文件与库链接->检查是否存在GoogleMaps.framework的任何重复引用
  • 如果是,则删除一个未添加的

当我升级一个使用手动安装的旧Google maps SDK的应用程序时,我注意到以下变化:

  • 需要在构建阶段链接到coreblutooth.frameworkAccelerate.framework->与库链接捆绑包
  • “其他链接器标志”下的-all_load标志将导致“重复符号”错误。(改用-ObjC

如果您使用CocoaPods安装方法(根据其当前说明),它应该包含所需的框架,但仍然会被搞得一团糟-所有加载

确保包括以下内容

**_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.
谷歌地图SDK框架和捆绑包

GoogleMaps(扩展名为.framework)位于您的根目录(您的.xcodeproj所在的位置)

Google地图(扩展名为.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,如果不存在,则添加它删除(目标->构建设置->其他链接器标志)中的所有加载标志解决了我在使用可可豆时遇到的问题。

如果今天有人遇到这种情况,在构建设置中链接
CoreLocation.framework
二进制文件
帮了我一把

谢谢昆汀。我刚刚这么做了,不幸的是它发送了另一个错误:架构x86_64的未定义符号:“\u vImageBoxConvolve_Planar8”,引用自:(匿名名称空间)::谷歌地图(GLWaterGroup.o)中的CreateBlurredImage(CGImage*,double,double)ld:symbol(s)找不到架构x86_64 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)。您应该按照这些说明确保安装了所需的所有内容:是的,这些说明,这里没有提到CoreBluetooth。所以它看起来像是在Accelerate.framework中提供的_VimageBoxConvalve_Planar8。我把它添加到我的项目中,问题消失了,现在它抱怨谷歌地图。框架定义了706个重复符号:(我有和funkybro相同的问题,我现在有706个重复符号。不能使用可可豆荚(因为它把一切都搞砸了,或者-ObjC标志…这为我节省了很多时间..+1。为什么谷歌不能记录这个!谢谢你,我的朋友!如果我不能使用-ObjC标志呢?我需要它用于谷歌地图,但它会与解析框架冲突。有帮助吗?使用-force_加载会导致符号重复…这个答案解决了我使用cordova插件的问题。)其中使用google maps IOS sdk 2.0.1(在撰写本文时)。谢谢!检查重复引用对我有帮助!您创建了我的一天Arun+1如果您要从应用程序中删除google maps,这也是解决方案,除非您执行“-”
**_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.