6 Stimmen

Apple mach-o Linkerfehler beim Arbeiten mit AdMob

Ich habe ein Testprojekt erstellt, um AdMob zu testen und zu lernen, wie man es verwendet. Aber wenn ich mein Projekt erstelle, erhalte ich 11 Apple Mach-O-Linker-Fehler, wenn ich versuche, AdMob in mein Projekt einzufügen (Xcode 4.3.3).

Die H-Datei ist in Ordnung und hier ist die M-Datei (Codes sind aus der AdMob-Wissensdatenbank).

#import "chViewController.h"

#define MY_BANNER_UNIT_ID @"meine ID steht hier geschrieben"

@interface chViewController ()

@end

@implementation chViewController

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

- (void)viewDidLoad {
    [super viewDidLoad];

    // Erstellen Sie eine Ansicht der Standardgröße oben auf dem Bildschirm.
    // Verfügbare AdSize-Konstanten sind in GADAdSize.h erläutert.
    bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

    // Geben Sie die "Gerätekennung" der Anzeige an. Dies ist Ihre AdMob Publisher-ID.
    bannerView_.adUnitID = MY_BANNER_UNIT_ID;

    // Lassen Sie die Laufzeitumgebung wissen, welches UIViewController nach der Navigation des Benutzers an die Anzeige zurückkehren soll, und fügen Sie es der Ansichtshierarchie hinzu.
    bannerView_.rootViewController = self;
    [self.view addSubview:bannerView_];

    // Starten Sie eine generische Anforderung zum Laden mit einer Anzeige.
    [bannerView_ loadRequest:[GADRequest request]];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Freigabe aller beibehaltenen Unteransichten der Hauptansicht.
}

Fehler

Nicht definierte Symbole für Architektur i386:
  "_SCNetworkReachabilityCreateWithName", verwiesen von:
      -[GADNetworkChecker startNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
  "_SCNetworkReachabilityScheduleWithRunLoop", verwiesen von:
      -[GADNetworkChecker startNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
  "_SCNetworkReachabilitySetCallback", verwiesen von:
      -[GADNetworkChecker startNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
  "_SCNetworkReachabilityUnscheduleFromRunLoop", verwiesen von:
      -[GADNetworkChecker stopNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
  "_OBJC_CLASS_$_ASIdentifierManager", verwiesen von:
      objc-class-ref in libGoogleAdMobAds.a(GADIdentifierUtilities.o)
  "_AudioServicesPlaySystemSound", verwiesen von:
      -[GADWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:] in libGoogleAdMobAds.a(GADWebViewDelegate.o)
  "_OBJC_CLASS_$_SKStoreProductViewController", verwiesen von:
      objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
  "_OBJC_CLASS_$_MFMailComposeViewController", verwiesen von:
      objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
  "_OBJC_CLASS_$_MFMessageComposeViewController", verwiesen von:
      objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
  "_SKStoreProductParameterITunesItemIdentifier", verwiesen von:
      -[GADOpener openInAppStore:fallbackURLString:] in libGoogleAdMobAds.a(GADOpener.o)
ld: Symbol(e) für Architektur i386 nicht gefunden
clang: Fehler: Linker-Befehl fehlgeschlagen mit Exit-Code 1 (Verwenden Sie -v, um den Aufruf zu sehen)

Ich habe lib.googleadmobAds zu meinem Ordner hinzugefügt und das Binärcode mit Bibliotheken verknüpft (wenn ich es entferne, erhalte ich dieselben Fehler, jedoch nur 4 davon, nicht 11).

Ich habe viele Stackoverflow-Beiträge dazu gelesen und einige von Ihnen sagen, dass ich auch adsupport.framework hinzufügen muss, aber ich kann es nicht finden. Es wird nicht in der Liste der verknüpften Binärdateien mit Bibliotheken angezeigt.

Keine dieser Lösungen im Netz funktioniert. Ich stecke fest.

Was stimmt damit nicht? Ich erhalte keine Fehlermeldungen zu meinen H- oder M-Dateien, also warum erhalte ich Mach-O-Linker-Fehler? Kann mir jemand bitte helfen?

14voto

J_D Punkte 3516

Sie müssen gegen die von AdMob benötigten Frameworks verlinken.

Gehen Sie zu den Einstellungen Ihres Ziels, dann zu Build-Phasen, dann zu "Binary mit Bibliotheken verknüpfen" und fügen Sie die folgenden Frameworks hinzu (möglicherweise benötigen Sie weitere, diese basieren nur auf den Fehlern, die ich sehe):

MessageUI.framework
StoreKit.framework
SystemConfiguration.framework

7voto

WebOrCode Punkte 6172

Dies sind die Frameworks, die ich hinzufügen muss, um die Dinge in Gang zu bringen:

AdSupport.framework
AudioToolbox.framework
MessageUI.framework
SystemConfiguration.framework
StoreKit.framework

Ich hatte bereits:

UIKit.framework
Foundation.framework
CoreGraphics.framework
libGoogleAdMobAds.a

Gute Dokumentation ist: https://developers.google.com/mobile-ads-sdk/docs/

0voto

trojanfoe Punkte 117964

Es sieht so aus, als müssten Sie das SystemConfiguration Framework verknüpfen.

Dieser Apple Leitfaden sollte Ihnen helfen, Xcode so zu konfigurieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X