1

MonoTouch アプリで 2 つの Objective-C ライブラリ (Facebook ライブラリと Millennial Media の広告ライブラリ) を使用したいと考えています。

MonoTouch アプリを (シミュレーター用であっても) コンパイルしようとすると、次のエラーが表示されます。

ld: duplicate symbol _OBJC_CLASS_$_SBJsonParser in /var/folders/4s/lcvdj54x0g72nrsw9vzq6nm80000gn/T/tmp6024c613.tmp/libMMSDK_4.5.5.a(SBJsonParser.o) and /var/folders/4s/lcvdj54x0g72nrsw9vzq6nm80000gn/T/tmp6024c613.tmp/libFacebookSDK.a(SBJsonParser.o) for architecture i386
collect2: ld returned 1 exit status

両方のライブラリが使用SBJsonParserされていると思いますが、それが問題です。

それで、それらを同じ MonoTouch バインディング プロジェクトに入れてみましたが、まったく同じエラーが発生しました。

私のバインディングは、GitHub の Xamarin バインディング プロジェクトから取得しました。リンカ フラグの設定は次のとおりです。

[assembly: LinkWith ("libMMSDK_4.5.5.a", LinkTarget.ArmV6 | LinkTarget.ArmV7 | LinkTarget.Simulator, Frameworks = "CoreGraphics QuartzCore MediaPlayer CoreLocation MobileCoreServices AudioToolbox AVFoundation SystemConfiguration UIKit", ForceLoad = true)]

...

[assembly: LinkWith ("libFacebookSDK.a", LinkTarget.Simulator | LinkTarget.ArmV6 | LinkTarget.ArmV7, ForceLoad = true, Frameworks = "CoreGraphics")]

これを修正するためにできることはありますか? 追加の MonoTouch コンパイラ フラグでしょうか。

4

1 に答える 1

1

わかりました、回避策を見つけました。

Millenial Media SDK には という名前のフォルダーがありMMSDK_Split_Libraries、その中を覗いてみると、XCode の実装ファイルを含むファイルがlibMMSDK_4.5.5_withoutJSON.a見つかりました。SBJsonParserこの別のライブラリを使用すると、少なくとも私のアプリはコンパイルされます。まだ MM SDK を統合していないので、正しく動作するかどうかを確認する必要があります。

誰かがそれを修正する別の方法を持っているかどうかを知りたい.

于 2012-06-21T14:27:23.840 に答える