6

admob をテストし、その使用方法を学習するためのテスト プロジェクトを作成しましたが、プロジェクトをビルドすると、プロジェクトに admob を追加しようとすると 11 個の apple macho-o リンカー エラーが発生します (Xcode 4.3.3)

h ファイルは oke で、ここに M ファイルがあります (コードは admob knowledge 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.
}

エラー

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)

lib.googleadmobAds をフォルダーに追加し、バイナリをライブラリにリンクしました (削除すると同じエラーが表示されますが、そのうちの 4 つは 11 ではありません)。

私はそれについてたくさんのstackoveflowの投稿を読みました.adsupport.frameworkを広告する必要があると言っている人もいますが、ライブラリリストを含むリンクバイナリには表示されません.

ネット上のこれらのソリューションはどれも機能していません。

h または m ファイルに関するエラーが表示されないのに、なぜ macho-o リンカー エラーが発生するのでしょうか。

4

3 に答える 3

14

AdMobが必要とするフレームワークに対してリンクする必要があります。

ターゲット設定に移動し、ビルドフェーズで、次にライブラリとバイナリをリンクし、次のフレームワークを追加します(追加のフレームワークが必要になる場合があります。これらは、表示されるエラーに基づいています)。

MessageUI.framework
StoreKit.framework
SystemConfiguration.framework
于 2013-01-23T16:32:57.383 に答える
0

フレームワークに対してリンクする必要があるようですSystemConfiguration

このApple ガイドは、そのために Xcode を構成するのに役立ちます。

于 2013-01-23T16:29:59.110 に答える