1

iPhone 用の admob SDK は、独自のlibAdMobNoThumb.aライブラリと、Objective-C ソース ベースの TouchJSON ライブラリを使用します。

それを含めることができるように、TouchJSONのC#バインディングを知っている人はいますか?

または、含めることができるライブラリを構築する方法を知っている人はいますか?

Xcode で iPhone ライブラリ プロジェクトを作成し、完全な TouchJSON ソース ツリーを追加しました。libTouchJSON.a以下の gcc_flags を使用して、結果をテスト iPhone アプリにリンクしました。

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

これにより、次のエラー出力が生成されました (-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)

この問題を回避するための提案はありますか?

TIA、モリーク。

4

3 に答える 3

4

あなたの AdMob ライブラリは CJSONDeserializer または CJSONSerializer クラスを見つけることができません。これは libTouchJSON.a に由来すると推測されます。通常、これは libTouchJSON.a がプロジェクトに含まれていなかったことを意味します。すべての余分な引数を再確認し、libTouchJSON が親指ではなく、リンクしようとしているすべてのアーキテクチャ (シミュレーターの場合は x86、デバイスの場合は armv6) が含まれていることを確認する必要があります。

于 2010-11-24T20:47:02.663 に答える
0

多くの人がこの質問を見つけるので、ここでgithubに投稿されたadmobの最新のモノタッチバインディングを使用できますhttps://github.com/dalexsoto/AlexTouch.GoogleAdMobAds

これは、それを使用する方法とそのイベントにサブスクライブする方法の例です

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());
}
于 2012-02-12T03:19:31.527 に答える
0

エリック、

遅れて申し訳ありませんが、最近私は純粋なxcodeプロジェクトで非常に忙しくしています。TouchJSONライブラリを作成した方法を説明します。

xcodeを使用してライブラリプロジェクトを作成し、最新のadmobライブラリに付属のTouchJSONソースをコピーしました。2つのnothumbリリースバージョンを作成しました。1つはシミュレーター用で、もう1つはデバイス用です。これにより、2つのライブラリが生成されます。MTプロジェクトでこれらを使いやすくするために、lipoツールを使用してそれらをファットライブラリに結合しました。Fatライブラリは、シミュレータやデバイスビルドで使用できるので便利です。ファットライブラリlibTouchJSON.aとファットレディのビルドに使用されたスクリプトを含む完全なプロジェクトは、http://www.filedropper.com/touchjsonで入手可能なzipファイルにあります。

(注:これは私の最初の質問への回答として投稿されています。EricSによる質問へのコメントとして受け入れるには少し長すぎたためです)

于 2011-01-05T08:42:09.127 に答える