1

我想在 MonoTouch 应用程序中使用两个 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,在里面我发现了一个libMMSDK_4.5.5_withoutJSON.a文件,其中包含SBJsonParserXCode 的实现文件。使用这个不同的库,至少我的应用程序现在可以编译了。我还没有集成 MM SDK,所以我得看看它是否正常工作。

很好奇是否有人有另一种方法来解决它。

于 2012-06-21T14:27:23.840 回答