我想在 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 编译器标志?