web-dev-qa-db-fra.com

GoogleMapsSDK: Symboles non définis pour l'architecture x86_64

J'essaie d'installer le SDK Google Maps et je rencontre cette erreur en exécutant:

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)
20
STo

J'ai remarqué les modifications suivantes lorsque j'ai mis à niveau une application qui utilisait l'ancien SDK de Google Maps installé manuellement:

  • Besoin de lien vers CoreBluetooth.framework et Accelerate.framework dans les phases de construction -> Lien Bundle with Libraries.
  • Le drapeau -all_load sous "Autres drapeaux de l'éditeur de liens" provoquera des erreurs "Symbole en double". (Utilisez -ObjC à la place.)

Si vous utilisez la méthode d’installation de CocoaPods (selon leurs instructions actuelles), les frameworks requis doivent être installés, mais ils seront toujours dérangés par -all_load .

43
colink

assurez-vous que les suivants sont inclus

Framework et kit GoogleMaps SDK

GoogleMaps (avec l'extension .framework) est présent dans votre répertoire racine (où se trouve votre .xcodeproj)

GoogleMaps (avec l'extension .bundle) est référencé dans votre projet xcode

Cadres suivants

Accelerate.framework

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

Security.framework

SystemConfiguration.framework

Paramètres de construction

La valeur de l'architecture dans les paramètres de votre projet inclut armv7.

Other Linker Flags a -ObjC, si non présent l'ajouter

11
Waseem Lateef
**_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.
9
ArunDhwaj IIITH

Il semble que l'API de Google a besoin de CoreBluetooth pour l'emplacement de Beacon. Lien contre CoreBluetooth.framework dans vos phases de construction et tout devrait bien se passer.

enter image description here

EDIT: Assurez-vous d'installer GoogleMaps en suivant ces instructions pour éviter tout problème: https://developers.google.com/maps/documentation/ios/start

4
Quentin Hayot

J'ai le même problème, dans mon cas, j'ai 2 références de GoogleMap.framework, j'ai supprimé l'ancienne référence du framework et le problème a été résolu :)

  • Cliquez sur le projet
  • In Build Phases -> Lier le binaire avec des bibliothèques -> Vérifier la présence d'une référence en double pour GoogleMaps.framework
  • Si oui, supprimez-en un que vous n'avez pas ajouté.
2
Neha
**_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.
2
ArunDhwaj IIITH

La suppression de -all_load flag de (Cibles-> Paramètres de construction-> Autre drapeau de l'éditeur de liens) a résolu mon problème lors de l'utilisation de cabossons.

0
Ali