2015-06-08 3 views
18

Я пытаюсь установить Google Maps 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 Google нуждается в CoreBluetooth для Beacon расположения. Ссылка на CoreBluetooth.framework в фазах сборки и все должно быть хорошо.

enter image description here

EDIT: Обязательно установите GoogleMaps через эти инструкции, чтобы избежать какой-либо вопрос: https://developers.google.com/maps/documentation/ios/start

+2

Спасибо Квентин. Я просто сделал это, и, к сожалению, он послал еще одну ошибку: Неопределенных символов для архитектуры x86_64: "_vImageBoxConvolve_Planar8", ссылочной из: (анонимного пространства имен) :: CreateBlurredImage (CGImage *, двойные, двойной) в GoogleMaps (GLWaterGroup. o) ld: символы (символы) не найдены для архитектуры x86_64 clang: ошибка: команда компоновщика не удалась с кодом выхода 1 (используйте -v для вызова вызова) – STo

+0

Вы должны следовать этим инструкциям, чтобы убедиться, что все необходимое: https://developers.google.com/maps/documentation/ios/start –

+0

Да, эти инструкции сосут IMO, нигде не упоминает CoreBluetooth. – funkybro

2

Я того же проблема, в моем случае я имеющий 2 ссылку на GoogleMap.framework я удалил старые рамки ссылки и проблема разрешится :)

  • Нажмите на проект
  • В Строительного Phases ->Link Двоичные с библиотеками -> Проверьте, нет ли дубликат ссылки присутствует для GoogleMaps.framework
  • Если да, то удалите один, который вы не добавили.
+0

Спасибо! Проверка дубликатов ссылок помогла мне! –

41

я заметил следующие изменения, когда я модернизировал приложение, которое использовало старый Google Maps SDK, который был установлен вручную:

  • нужно связать с CoreBluetooth.framework и Accelerate.framework в фазах построения -> Связывание связок с библиотеками.
  • -all_load флаг под «Другие флаги компоновщика» приведет к ошибкам «дублировать символ». (Используйте -ObjC вместо этого.)

Если вы используете метод CocoaPods установки (в соответствии с их текущей инструкцией), он должен принять необходимые рамки, но все равно получить перепутан по -all_load ,

+0

это экономит мое время много .. +1 для этого. – g212gs

+0

Почему этот документ Google не подходит? Спасибо, мой друг! – 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

убеждается следующими включены

рамок

GoogleMaps SDK и расслоение

GoogleMaps (с расширением .framework) присутствуют в корневом каталоге (где ваш .xcodeproj is)

Ссылки на 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? Мне нужно это для карт Google, но это вызывает конфликты с синтаксисом разбора. любая помощь? Использование -force_load вызывает дубликаты символов ... – SKYnine

+0

, какую версию sdk вы используете для карт Google ..? –

0

Удаление -all_load флаг из (Targets-> Build Настройки-> Другое флаг линкера) устранить проблему при использовании стручки какао.

+0

также работал для меня, пока * не * используя какао-стручки –

Смежные вопросы