web-dev-qa-db-ja.com

GoogleMapsSDK:アーキテクチャx86_64の未定義のシンボル

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

手動でインストールされた古いGoogleマップSDKを使用していたアプリをアップグレードしたときに、次の変更に気付きました。

  • ビルドフェーズでCoreBluetooth.frameworkおよびAccelerate.frameworkにリンクする必要があります->ライブラリとバンドルをリンクします。
  • 「その他のリンカーフラグ」の下にある-all_loadフラグを使用すると、「シンボルの重複」エラーが発生します。 (代わりに-ObjCを使用してください。)

CocoaPodsのインストール方法を(現在の指示に従って)使用する場合、必要なフレームワークを取得する必要がありますが、それでも-all_loadによって混乱します。

43
colink

以下が含まれていることを確認してください

GoogleMaps SDKフレームワークとバンドル

GoogleMaps(拡張子.framework)は、ルートディレクトリ(.xcodeprojがある場所)にあります。

GoogleMaps(.bundle拡張子付き)がxcodeプロジェクトで参照されている

以下のフレームワーク

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

ビルド設定

プロジェクト設定のアーキテクチャ値には、armv7が含まれています。

その他のリンカーフラグには-ObjCがあり、存在しない場合は追加します

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

GoogleのAPIはビーコンの場所にCoreBluetoothを必要とするようです。ビルドフェーズでCoreBluetooth.frameworkに対してリンクすると、すべてが正常に機能するはずです。

enter image description here

編集:問題を回避するために、次の手順に従ってGoogleMapsをインストールしてください: https://developers.google.com/maps/documentation/ios/start

4
Quentin Hayot

私は同じ問題を抱えていますが、私の場合、GoogleMap.frameworkの2つの参照があり、古いフレームワークの参照を削除して問題が解決しました:)

  • プロジェクトをクリック
  • Build Phases-> Link Binary with Libraries-> GoogleMaps.frameworkの重複する参照が存在することを確認します
  • はいの場合は、追加していないものを削除します。
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

今日誰かがこれを経験しているなら、リンクCoreLocation.frameworkバイナリビルド設定は私のためのトリックをしました

0
mmr118

(ターゲット->ビルド設定->その他のリンカーフラグ)から-all_loadフラグを削除すると、ココアポッドの使用中に問題が解決しました。

0
Ali