2

我正在尝试在我的应用中使用 Google Maps SDK。到目前为止,我已经链接了所有框架。我很确定我已经按照说明-ObjC添加了适当的标志。但是,当我将他们的代码复制并粘贴到我的班级时,我收到以下错误:ViewController.m

架构 i386 的未定义符号:
“_OBJC_CLASS_$_GMSCameraPosition”,引用自:FoothillTourViewController.o 中的 objc-class-ref “_OBJC_CLASS_$_GMSMapView”,引用自:FoothillTourViewController.o 中的 objc-class-ref “_OBJC_CLASS_$_GMSMarker”,引用自:FoothillTourViewController.o“_OBJC_CLASS_$_GMSServices”中的 objc-class-ref,引用自:FoothillTourAppDelegate.o 中的 objc-class-ref ld:未找到体系结构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1 (使用 -v 查看调用)

"FoothillTourViewController"是我ViewController班级的名字。这是我的 View Controller 类的代码。代码直接取自说明。

#import "FoothillTourViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@implementation FoothillTourViewController {
    GMSMapView *mapView_;
}

// You don't need to modify the default initWithNibName:bundle: method.

  - (void)loadView {
  //Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                        longitude:151.20
                                                             zoom:6];
 mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
 mapView_.myLocationEnabled = YES;
 self.view = mapView_;

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView_;
  }

任何帮助将不胜感激,因为我一直在花费数小时试图弄清楚发生了什么。我猜这是一个愚蠢的错误,但我不能指望它。谢谢!

4

3 回答 3

6

更新:这个答案已经过时了。该文档现在告诉您使用 CocoaPods 而不是手动链接依赖项。

有关详细信息,请参阅Google Developers Console

旧答案:

Google Maps SDK 要求您链接很多框架。他们来了:

  • AVFoundation.framework
  • CoreData.framework
  • CoreLocation.framework
  • CoreText.framework
  • GLKit.framework
  • ImageIO.framework
  • libc++.dylib
  • libicucore.dylib
  • libz.dylib
  • OpenGLES.framework
  • QuartzCore.framework
  • SystemConfiguration.framework

我在这里找到了这份清单。

于 2014-09-20T20:24:53.040 回答
1

适用于 iOS 的 Google Maps SDK 1.9.2 及更早版本以包含静态框架的 zip 文件的形式提供。还可以选择从 CocoaPods pod 安装最新版本。从 1.10.0 版开始,Google Maps SDK for iOS 只能通过 CocoaPods 安装。

于 2015-11-06T12:46:20.247 回答
0

正如您所说,您正在使用适用于 iOS 的 Google Maps SDK。然而,看起来您正在为 OS X 编译,因为对于英特尔处理器 i386,这些符号是未定义的。(除非您尝试为模拟器编译)

SDK 可能未针对模拟器进行编译。您可以通过“file”命令运行 SDK 二进制文件来检查。如果它支持 ARM 处理器,但不支持 i386,则它不支持模拟器。您必须将构建标志更改为仅针对 armv7/armv7s 处理器进行编译。

于 2013-08-02T23:00:29.563 回答