2010-11-24 8 views
1

Das admob sdk für iPhone verwendet eine proprietäre libAdMobNoThumb.a-Bibliothek und eine auf Objective-C-Quellen basierende TouchJSON-Bibliothek.Monotouch-Bindung für TouchJSON?

Kennt jemand eine C# -Bindung für TouchJSON, so dass wir es aufnehmen können?

Oder weiß jemand, wie man eine Bibliothek baut, die enthalten sein kann?

Wir haben ein iPhone-Bibliotheksprojekt mit Xcode erstellt und den vollständigen TouchJSON-Quellbaum hinzugefügt. Wir haben als verknüpft die resultierende libTouchJSON.a in einem Test iPhone App mit folgenden gcc_flags:

-v -v -v -gcc_flags "-L${ProjectDir}/Lib -lAdMobNoThumb -lTouchJSON -force_load ${ProjectDir}/Lib/libAdMobNoThumb.a -force_load ${ProjectDir}/Lib/libTouchJSON.a" 

Dies ergab folgende Fehlerausgang (dank der -v -v -v):

Error 1: mtouch failed with the following message: 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m: In function 'monotouch_debug_connect': 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m:1779: warning: implicit declaration of function 'select' 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m: In function 'main': 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m:1821: warning: implicit declaration of function 'chdir' 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m:1838: warning: implicit declaration of function 'monotouch_enable_debug_tracking' 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m:1914: warning: implicit declaration of function 'dup2' 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m:1921: warning: implicit declaration of function 'mini_get_debug_options' 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m:1925: warning: implicit declaration of function 'mono_debugger_agent_parse_options' 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m:2052: warning: implicit declaration of function 'getpagesize' 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m:2055: warning: cast from pointer to integer of different size 
/var/folders/hF/hF42FIdhEUmY1y-pGRsu1k+++TI/-Tmp-/tmpe374af5.tmp/main.m:2055: warning: initialization makes pointer from integer without a cast 
Undefined symbols: 
    "_OBJC_CLASS_$_CJSONSerializer", referenced from: 
     objc-class-ref-to-CJSONSerializer in libAdMobNoThumb.a(AdMobAd.o) 
     objc-class-ref-to-CJSONSerializer in libAdMobNoThumb.a(AdMobWebView.o) 
     objc-class-ref-to-CJSONSerializer in libAdMobNoThumb.a(AdMobFlexWebView.o) 
    "_OBJC_CLASS_$_CJSONDeserializer", referenced from: 
     objc-class-ref-to-CJSONDeserializer in libAdMobNoThumb.a(AdMobOpener.o) 
     objc-class-ref-to-CJSONDeserializer in libAdMobNoThumb.a(AdMobSearchViewController.o) 
     objc-class-ref-to-CJSONDeserializer in libAdMobNoThumb.a(AdMobAd.o) 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
(1) (AdMobber) 

Irgendwelche Vorschläge um dieses Problem zu umgehen?

TIA, Mollyke.

Antwort

4

Ihre AdMob-Bibliothek kann die Klassen CJSONDeserializer oder CJSONSerializer nicht finden, die vermutlich aus libTouchJSON.a stammen. Im Allgemeinen bedeutet dies, dass Ihre libTouchJSON.a nicht in Ihrem Projekt enthalten war. Sie sollten alle Ihre persönlichen Argumente verdoppeln überprüfen und sicherstellen, dass Ihre libTouchJSON nicht Daumen und beinhaltet alle Architekturen Sie auf Link (x86 für Simulator, ARMv6 für Gerät) versucht

+0

Geoff zum suscribe, Du bist der beste! Wir haben einen NotShumb-Simulator von libTouchJSON.a erstellt, der damit verknüpft ist, und Bingo. – guivho

0

Eric,

Sorry für die Verzögerung, aber in letzter Zeit war ich sehr beschäftigt mit reinen xcode-Projekten. Lassen Sie mich Ihnen erzählen, wie ich eine TouchJSON-Bibliothek erstellt habe.

Ich erstellte ein Bibliotheksprojekt mit xcode und kopierte die TouchJSON-Quellen, die mit der neuesten Admob-Bibliothek geliefert wurden. Ich habe zwei NotHumb Release-Versionen gebaut, eine für den Simulator und eine für das Gerät. Das erzeugt zwei Bibliotheken. Um die Verwendung in MT-Projekten zu erleichtern, habe ich das Lipo-Tool verwendet, um sie zu einer Fettbibliothek zu kombinieren. Fettbibliotheken sind praktisch, da sie sowohl in Simulator- als auch in Geräte-Builds verwendet werden können. Das vollständige Projekt, einschließlich der fetten Bibliothek libTouchJSON.a und des Skripts, mit dem die fette Dame gebaut wurde, ist in der Zip-Datei verfügbar unter http://www.filedropper.com/touchjson.

(Hinweis: Dies als Antwort auf meine erste Frage gestellt wird, da es etwas zu lang war von Eric S auf die Frage als Kommentar in Kauf genommen zu werden)

0

Da viele Menschen werden diese Frage finden, Sie kann gebucht das auf den neuesten Stand Monotouch-Bindings für admob auf gitHub hier https://github.com/dalexsoto/AlexTouch.GoogleAdMobAds

hier ist ein Beispiel dafür, wie man es benutzt und wie man seine Ereignisse

public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 

      var ad = new GADBannerView(new RectangleF(new PointF(0,0), GADBannerView.GAD_SIZE_300x250)) 
      { 
       AdUnitID = "Use Your AdMob Id here", 
       RootViewController = this 

      }; 

      ad.DidReceiveAd += delegate 
      { 
       this.View.AddSubview(ad); 
       Console.WriteLine("AD Received"); 
      }; 

      ad.DidFailToReceiveAdWithError += delegate(object sender, GADBannerViewDidFailWithErrorEventArgs e) { 
       Console.WriteLine(e.Error); 
      }; 

      ad.WillPresentScreen += delegate { 
       Console.WriteLine("showing new screen"); 
      }; 

      ad.WillLeaveApplication += delegate { 
       Console.WriteLine("I will leave application"); 
      }; 

      ad.WillDismissScreen += delegate { 
       Console.WriteLine("Dismissing opened screen"); 
      }; 

      Console.Write("Requesting Ad"); 
      ad.LoadRequest(new GADRequest()); 
} 
Verwandte Themen