2015-06-08 12 views
18

Ich versuche, die Google Maps SDK zu installieren und ich durch diesen Fehler leite beim Laufen:GoogleMapsSDK: undefinierte Symbole für Architektur 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) 

Antwort

4

Es ist wie die Google-API sieht braucht CoreBluetooth für Beacon Lage. Verknüpfen Sie in Ihren Build-Phasen gegen und alles sollte in Ordnung sein.

enter image description here

EDIT: Stellen Sie sicher, Google durch diese Anweisungen zur Installation jedes Problem zu vermeiden: https://developers.google.com/maps/documentation/ios/start

+2

Danke Quentin. Ich tat genau das und leider schickte es einen weiteren Fehler: undefinierte Symbole für Architektur x86_64: "_vImageBoxConvolve_Planar8", verwiesen von: (anonymen Namespace) :: CreateBlurredImage (CGImage *, double, double) in Googlemaps (GLWaterGroup. o) ld: Symbol (e) nicht für Architektur gefunden x86_64 Clang: Fehler: Linker-Befehl fehlgeschlagen mit Exit-Code 1 (verwenden Sie -v, um Aufruf zu sehen) – STo

+0

Sie sollten diese Anweisungen befolgen, um sicherzustellen, dass alles, was Sie benötigen, installiert ist: https://developers.google.com/maps/documentation/ios/start –

+0

Ja diese Anweisungen saugen IMO, nirgends erwähnt es dort CoreBluetooth. – funkybro

2

ich gleiche Problem habe ich in meinem Fall habe 2 Bezug von GoogleMap.framework erhalten

, löschte ich alt Rahmen Referenz und Problem gelöst :)
  • Klicken Sie auf Projekt
  • In Build-Phasen ->Link-Binary mit Bibliotheken -> Überprüfen Sie jede doppelte Referenz für GoogleMaps.framework vorhanden ist
  • Wenn ja, dann ein löschen, die Sie hinzugefügt.
+0

Danke, doppelte Referenzen zu überprüfen hat mir geholfen! –

41

Ich bemerkte die folgenden Änderungen, wenn ich eine App aktualisiert, die die ältere Google Maps SDK wurde mit manuell installiert worden waren: Sie benötigen

  • zu CoreBluetooth.framework und Accelerate.framework verlinken in Build-Phasen -> Link-Bundle mit Bibliotheken.
  • Das -all_load Flag unter "Andere Linker Flags" wird "doppelte Symbol" Fehler verursachen. (Verwenden Sie -ObjC statt.)

Wenn Sie die CocoaPods Installationsmethode verwenden (pro ihre aktuellen Anweisungen), sollte es der erforderlichen Rahmenbedingungen nehmen, aber es wird immer noch von -all_load verkorkste erhalten .

+0

das spart mir viel Zeit .. +1 für diese. – g212gs

+0

Warum kann Google das nicht dokumentieren? Danke mein Freund! – 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

Sie haben meinen Tag gemacht Arun +1 – satheesh

9

make folgende sicher

Google SDK Rahmen enthalten sind und

Googlemaps (mit .framework Erweiterung) bündeln im Stammverzeichnis vorhanden ist (wo Ihre Xcodeproj ist)

GoogleMaps (mit .bundle Erweiterung) wird referenziert in Ihrem Xcode-Projekt

Nach Frameworks

beschleunigen.Rahmen

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

Sicherheit. Rahmen

SystemConfiguration.framework

Build-Einstellungen

Architektur Wert in den Projekteinstellungen enthält ARMv7.

Andere Linker Flags -ObjC hat, wenn nicht present es

+0

Es ist perfekt ohne CocoaPods funktionieren. . Vielen Dank . .. – iHart

+0

Was ist, wenn ich das -ObjC-Flag nicht verwenden kann? Ich brauche es für Google Maps, aber es verursacht Konflikte mit dem Framework. irgendeine Hilfe? Die Verwendung von -force_load führt zu Symbolduplikaten ... – SKYnine

+0

Welche SDK-Version verwenden Sie für Google Maps? –

0

Entfernen -all_load Flagge von (Targets-> Build Einstellungen-> Andere Linker-Flag) gelöst mein Problem, während Kakaoschoten verwenden.

+0

arbeitete auch für mich während * nicht * mit Kakaoschoten –