2010-11-24 7 views
1

iPhone 용 admob SDK는 독점적 인 libAdMobNoThumb.a 라이브러리와 Objective-C 소스 기반 TouchJSON 라이브러리를 사용합니다.TouchJSON 용 모노 터치 바인딩?

누구든지 TouchJSON의 C ​​# 바인딩을 알고 있으므로 포함시킬 수 있습니까?

아니면 포함시킬 수있는 라이브러리를 만드는 방법을 아는 사람이 있습니까?

우리는 Xcode를 사용하여 iPhone 라이브러리 프로젝트를 만들고 전체 TouchJSON 소스 트리를 추가했습니다. 다음

-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) 

어떤 제안 우리는 다음과 같은 gcc_flags으로 테스트 아이폰 앱에서 libTouchJSON.a을 결과를 연결보다했습니다 이 문제를 해결하려면?

TIA, Mollyke.

답변

4

AdMob 라이브러리에서 libTouchJSON.a의 CJSONDeserializer 또는 CJSONSerializer 클래스를 찾을 수 없습니다. 일반적으로 이는 libTouchJSON.a가 프로젝트에 포함되어 있지 않다는 것을 의미합니다. 당신은에 대한

죄송합니다, 모든 여분의 인수를 한 번 확인하고 libTouchJSON 엄지 손가락이 아니므 (장치 시뮬레이터 86, ARMv6에) 링크

+0

제프에 suscribe하는 방법, 당신이 최고야를 사용하는 방법의 예는 여기 https://github.com/dalexsoto/AlexTouch.GoogleAdMobAds

GitHub의에 게시! 우리는 그것과 링크 된 libTouchJSON.a의 nothumb 시뮬레이터 빌드와 빙고를 만들었습니다. – guivho

0

에릭하려는 모든 아키텍처를 포함하고 있는지 확인해야합니다 지연,하지만 요즘 나는 순수한 xcode 프로젝트로 매우 바빴다. 어떻게 TouchJSON 라이브러리를 만들 었는지 알려 드리겠습니다.

xcode로 라이브러리 프로젝트를 만들고 최신 admob 라이브러리와 함께 제공된 TouchJSON 소스를 복사했습니다. 필자는 시뮬레이터 용 버전과 장치 용 버전 두 가지를 출시했습니다. 그것은 두 개의 라이브러리를 생성합니다. MT 프로젝트에서 이들을 사용하기 쉽도록 lipo 도구를 사용하여이를 팻 라이브러리에 결합했습니다. 지방 라이브러리는 시뮬레이터와 장치 빌드에서 사용할 수 있으므로 편리합니다. 지방 라이브러리 libTouchJSON.a와 뚱뚱한 여자를 만드는 데 사용 된 스크립트를 포함한 전체 프로젝트는 http://www.filedropper.com/touchjson에있는 zip 파일에 있습니다.

(주 : 에릭 S에 의하여 문제에 주석으로 인정하는 약간 너무 깁니다으로이 나의 최초의 질문에 대한 답변으로 게시됩니다)이 질문을 찾을 수 많은 사람들이 이후

0

, 당신 몹에 대한 날짜 monotouch 바인딩에 최대를 사용할 수 있습니다 여기에 그 이벤트

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()); 
}