使用admob时,apple mach-o链接器错误

Bug*_*zer 6 ios

我创建了一个测试项目来测试admob并了解如何使用它但是当我构建项目时,当我尝试将admob添加到我的项目中时,我得到了11个苹果机器人链接器错误(Xcode 4.3.3)

h文件是oke,这里是M文件(代码取自admob knowlage base)

#import "chViewController.h"

#define MY_BANNER_UNIT_ID @"my id is written in here"

@interface chViewController ()

@end

@implementation chViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // Create a view of the standard size at the top of the screen.
    // Available AdSize constants are explained in GADAdSize.h.
    bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

    // Specify the ad's "unit identifier." This is your AdMob Publisher ID.
    bannerView_.adUnitID = MY_BANNER_UNIT_ID;

    // Let the runtime know which UIViewController to restore after taking
    // the user wherever the ad goes and add it to the view hierarchy.
    bannerView_.rootViewController = self;
    [self.view addSubview:bannerView_];

    // Initiate a generic request to load it with an ad.
    [bannerView_ loadRequest:[GADRequest request]];
}


- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}
Run Code Online (Sandbox Code Playgroud)

错误

Undefined symbols for architecture i386:
  "_SCNetworkReachabilityCreateWithName", referenced from:
      -[GADNetworkChecker startNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
  "_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
      -[GADNetworkChecker startNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
  "_SCNetworkReachabilitySetCallback", referenced from:
      -[GADNetworkChecker startNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
  "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
      -[GADNetworkChecker stopNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
  "_OBJC_CLASS_$_ASIdentifierManager", referenced from:
      objc-class-ref in libGoogleAdMobAds.a(GADIdentifierUtilities.o)
  "_AudioServicesPlaySystemSound", referenced from:
      -[GADWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:] in libGoogleAdMobAds.a(GADWebViewDelegate.o)
  "_OBJC_CLASS_$_SKStoreProductViewController", referenced from:
      objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
  "_OBJC_CLASS_$_MFMailComposeViewController", referenced from:
      objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
  "_OBJC_CLASS_$_MFMessageComposeViewController", referenced from:
      objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
  "_SKStoreProductParameterITunesItemIdentifier", referenced from:
      -[GADOpener openInAppStore:fallbackURLString:] in libGoogleAdMobAds.a(GADOpener.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我已将lib.googleadmobAds添加到我的文件夹,并将二进制文件与库链接(当我删除它时,我收到相同的错误,但其中4个不是11)

我阅读了很多关于它的stackoveflow帖子,有些人说我还需要广告adsupport.framework但我找不到它我没有在带有库列表的链接二进制文件中看到它.

网上的这些解决方案都没有起作用我被卡住了.

它有什么问题我没有收到关于我的h或m文件的任何错误,所以为什么有机器链接器错误可以帮助我?

J_D*_*J_D 14

您需要链接AdMob所需的框架.

转到目标设置,然后在Build Phases中,然后在Link Binary with Libraries中添加以下框架(您可能需要额外的框架,这些是基于我看到的错误的juste):

MessageUI.framework
StoreKit.framework
SystemConfiguration.framework
Run Code Online (Sandbox Code Playgroud)


Web*_*ode 7

这些是我需要添加的框架以使事情顺利进行:

AdSupport.framework
AudioToolbox.framework
MessageUI.framework
SystemConfiguration.framework
StoreKit.framework
Run Code Online (Sandbox Code Playgroud)

我已经:

UIKit.framework
Foundation.framework
CoreGraphics.framework
libGoogleAdMobAds.a
Run Code Online (Sandbox Code Playgroud)

好的文档是:https: //developers.google.com/mobile-ads-sdk/docs/