2015-06-08 22 views
18

sto cercando di installare Google mappe SDK e io sono in esecuzione attraverso questo errore durante l'esecuzione:GoogleMapsSDK: i simboli non definiti per l'architettura 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) 

risposta

4

Sembra che le API di Google ha bisogno CoreBluetooth per la posizione Beacon. Link contro CoreBluetooth.framework nelle tue fasi di costruzione e tutto dovrebbe andare bene.

enter image description here

EDIT: Assicurarsi di installare GoogleMaps attraverso quelle istruzioni per evitare qualsiasi problema: https://developers.google.com/maps/documentation/ios/start

+2

Grazie Quentin. Ho appena fatto che, purtroppo, e ha inviato un altro errore: simboli non definiti per l'architettura x86_64: "_vImageBoxConvolve_Planar8", si fa riferimento da: (namespace anonimo) :: CreateBlurredImage (CGImage *, doppie, matrimoniali) a GoogleMaps (GLWaterGroup. o) ld: simbolo/i non trovato per l'architettura x86_64 clang: errore: comando linker non riuscito con codice di uscita 1 (utilizzare -v per vedere l'invocazione) – STo

+0

È necessario seguire queste istruzioni per assicurarsi che tutto ciò che serve sia installato: https://developers.google.com/maps/documentation/ios/start –

+0

Sì, quelle istruzioni succhiano IMO, da nessuna parte si parla di CoreBluetooth. – funkybro

2

Sto avendo lo stesso problema, nel mio caso io sto avendo 2 di riferimento di GoogleMap.framework , ho cancellato vecchio quadro di riferimento e di problem vengono risolti :)

  • Clicca sul progetto
  • In Costruire Fasi ->collegamento binari con le librerie -> Controlla ogni riferimento duplicato è presente per GoogleMaps.framework
  • Se sì allora eliminare uno, che non aggiunto.
+0

Grazie, controllare i riferimenti duplicati mi ha aiutato! –

41

ho notato le seguenti modifiche quando ho aggiornato un app che stava usando il più vecchio SDK mappe di Google che era stato installato manualmente:

  • necessità di collegare con CoreBluetooth.framework e Accelerate.framework in Fasi di compilazione -> Link Bundle con librerie.
  • Il flag -all_load in "Altri linker flag" causerà errori di "simbolo duplicato". (Utilizzare -ObjC invece.)

Se si utilizza il metodo CocoaPods di installazione (per le loro istruzioni correnti), si dovrebbe prendere dei quadri richiesti ma sarà ancora ottenere incasinato da -all_load .

+0

questo mi fa risparmiare molto tempo .. +1 per questo. – g212gs

+0

Perché Google non può Documento questo! Grazie amico mio! – 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

hai reso la mia giornata Arun +1 – satheesh

9

Assicurarsi che seguono sono inclusi

GoogleMaps SDK quadro e bundle

GoogleMaps (con estensione .framework) è presente alla directory principale (in cui il vostro .xcodeproj è)

GoogleMaps (con estensione .bundle) è referenziato nel progetto Xcode

seguenti ambiti

accelerare.quadro

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

sicurezza. quadro

SystemConfiguration.framework

impostazioni di generazione

valore Architettura nelle impostazioni di progetto comprende ARMv7.

Altre Bandiere Linker ha -ObjC, se non presente aggiungerlo

+0

È perfettamente funzionante senza CocoaPods. . Grazie mille . .. – iHart

+0

cosa succede se non riesco a usare il flag -ObjC? Ne ho bisogno per google maps ma causa conflitti con il framework parse. qualsiasi aiuto? L'uso di -force_load causa i duplicati dei simboli ... – SKYnine

+0

quale versione di sdk stai usando per google maps ..? –

0

Rimozione -all_load bandiera da (destinazione delle richieste> Crea Impostazioni-> Altro bandiera linker) risolto il mio problema durante l'utilizzo di baccelli di cacao.

+0

ha funzionato anche per me mentre * non * utilizzava cialde di cacao –