【问题标题】:Apple Mach-O Linker Error when using Google Maps SDK for IOS使用适用于 IOS 的 Google Maps SDK 时出现 Apple Mach-O 链接器错误
【发布时间】:2013-08-02 22:48:18
【问题描述】:

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

架构 i386 的未定义符号:
“_OBJC_CLASS_$_GMSCameraPosition”,引用自: FoothillTourViewController.o "_OBJC_CLASS_$_GMSMapView" 中的 objc-class-ref,引用自: FoothillTourViewController.o "_OBJC_CLASS_$_GMSMarker" 中的 objc-class-ref,引用自: FoothillTourViewController.o "_OBJC_CLASS_$_GMSServices" 中的 objc-class-ref,引用自: FoothillTourAppDelegate.o ld 中的 objc-class-ref:找不到体系结构 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_;
  }

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

【问题讨论】:

    标签: ios objective-c iphone xcode


    【解决方案1】:

    更新:这个答案已经过时了。文档现在告诉您使用 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

    我在here找到了这个列表。

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-14
        • 2014-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多