首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Google iOS (1.8.1)时架构armv7的未定义符号

使用Google iOS (1.8.1)时架构armv7的未定义符号
EN

Stack Overflow用户
提问于 2014-08-11 16:48:02
回答 4查看 10.3K关注 0票数 9

我试图使用cocoapods (0.33.1)添加Google iOS (1.8.1)。

部署目标版本:iOS 7.0

我添加了这个结束符:pod 'Google-Maps-iOS-SDK','~> 1.8‘下载并正确安装了sdk。

我开始从这里添加头文件和示例地图视图加载代码。

我正确地添加了API键。在一个视图控制器的- (void)viewDidLoad中,

我增加了以下代码:

代码语言:javascript
复制
 // 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];
GMSMapView *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_; 

我在iPhone的构建中遇到了这个错误(不是在模拟器中)

架构armv7的未定义符号: "_OBJC_CLASS_$_GMSMarker",引用于: objc-class-ref in DealDetailsViewController.o "_OBJC_CLASS_$_GMSMapView",引用于: objc-class-ref in DealDetailsViewController.o "_OBJC_CLASS_$_GMSCameraPosition",引用于: objc-class-ref in DealDetailsViewController.o "_OBJC_CLASS_$_GMSServices",引用于: objc-class-ref中的AppDelegate.o :符号(S)没有找到架构armv7 clang:错误:链接器命令与退出代码1失败(使用-v查看调用)

我还尝试使用google sdk手动安装(没有cocoapods)。我还添加了链接标志:-ObjC。它构建得很好,但在运行时显示选择器时崩溃,没有发现像这样的错误:

将抛出一个NSException,其中包含发送到实例的说明- -GMSMapView animateToCameraPosition::不可识别的选择器。

我只需要使用google SDK,无论是使用cocoapod还是手动安装。

我在这里有遗漏什么吗?

编辑

如果有任何与Pods.xcconfig相关的内容,那么下面是该文件的内容:

代码语言:javascript
复制
FRAMEWORK_SEARCH_PATHS = "$(PODS_ROOT)/Google-Maps-iOS-SDK" "$(PODS_ROOT)/Parse-iOS-SDK"
    GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
    HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/Bolts" "${PODS_ROOT}/Headers/Facebook-iOS-SDK" "${PODS_ROOT}/Headers/Facebook-iOS-SDK/FacebookSDK" "${PODS_ROOT}/Headers/Google-Maps-iOS-SDK" "${PODS_ROOT}/Headers/Google-Maps-iOS-SDK/GoogleMaps" "${PODS_ROOT}/Headers/MBProgressHUD" "${PODS_ROOT}/Headers/Parse-iOS-SDK" "${PODS_ROOT}/Headers/Reachability" "${PODS_ROOT}/Headers/WYPopoverController"

    OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers" -isystem "${PODS_ROOT}/Headers/Bolts" -isystem "${PODS_ROOT}/Headers/Facebook-iOS-SDK" -isystem "${PODS_ROOT}/Headers/Facebook-iOS-SDK/FacebookSDK" -isystem "${PODS_ROOT}/Headers/Google-

    Maps-iOS-SDK" -isystem "${PODS_ROOT}/Headers/Google-Maps-iOS-SDK/GoogleMaps" -isystem "${PODS_ROOT}/Headers/MBProgressHUD" -isystem "${PODS_ROOT}/Headers/Parse-iOS-SDK" -isystem "${PODS_ROOT}/Headers/Reachability" -isystem "${PODS_ROOT}/Headers/WYPopoverController"

    OTHER_LDFLAGS = -ObjC -lc++ -licucore -lsqlite3 -lz -framework AVFoundation -framework AudioToolbox -framework CFNetwork -framework CoreData -framework CoreGraphics -framework CoreLocation -framework CoreText -framework GLKit -framework GoogleMaps -framework ImageIO -framework MobileCoreServices -framework OpenGLES -framework Parse -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -framework UIKit -weak_framework Accounts -weak_framework AdSupport -weak_framework Security -weak_framework Social
    PODS_ROOT = ${SRCROOT}/Pods
EN

回答 4

Stack Overflow用户

发布于 2014-08-14 00:46:21

看起来链接器找不到sdk库。标头是存在的,但是sdk对象-文件没有链接到项目。

检查这一情况:

BuildSettings-> Linker >其他链接标记必须具有值$(继承)

票数 50
EN

Stack Overflow用户

发布于 2014-08-16 19:37:54

你遵循了下面提到的所有步骤吗?

  1. 启动Xcode,打开一个现有项目,或者创建一个新项目。如果您是iOS新手,请创建一个单一的视图应用程序,禁用“使用情节提要”,但要确保“使用自动参考计数”是打开的。
  2. GoogleMaps.framework包拖到项目的框架组中。当出现提示时,选择将项复制到目标组的文件夹中。
  3. 右键单击项目中的GoogleMaps.framework,然后选择Show。
  4. GoogleMaps.bundle从参考资料文件夹拖到项目中。我们建议把它放在框架组中。当出现提示时,确保没有选择将项复制到目标组的文件夹中。
  5. 从project中选择项目,并选择应用程序的目标。打开“构建阶段”选项卡,并在带有库的链接二进制文件中添加以下框架: AVFoundation.framework CoreData.framework CoreLocation.framework CoreText.framework GLKit.framework ImageIO.framework libc++.dylib libicucore.dylib libz.dylib OpenGLES.framework QuartzCore.framework SystemConfiguration.framework

选择项目,而不是特定目标,然后打开“生成设置”选项卡。在另一个链接器标志部分中,添加-ObjC。如果这些设置不可见,请将“生成设置”栏中的筛选器从“基本”更改为“全部”。最后,将API键添加到AppDelegate中。

代码语言:javascript
复制
#import <GoogleMaps/GoogleMaps.h>

application:didFinishLaunchingWithOptions:方法中添加以下内容,用API键替换API_KEY。

代码语言:javascript
复制
[GMSServices provideAPIKey:@"API_KEY"];

来源:谷歌

票数 1
EN

Stack Overflow用户

发布于 2014-08-11 18:28:43

我经常和其他的语言犯同样的错误。我说不出确切的原因,但当我在树枝之间切换时,就会发生这种情况。

解决办法很简单:

  • 删除cocoapods生成的工作区
  • 清洁项目派生数据组织者->项目

  • 运行吊舱安装

对我来说总是管用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25248359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档