【发布时间】:2014-06-19 10:57:03
【问题描述】:
我正在尝试在 Xamarin 项目中绑定一个 Objective C 库。我第一次这样做,但对 Objective C 了解不多,真是令人头疼。
我已经与 Objective Sharpie 进行了斗争,并设法获得了一个可以编译并且看起来还不错的项目。为了使 something 可以工作,我尽可能少地暴露库,但是当尝试在设备上调试时(它不是 i386,它是外部附件的库)我得到以下链接器错误:
Error MT5211: Native linking failed, undefined Objective-C class:
_OBJC_CLASS_$_ICAdministration. If '_OBJC_CLASS_$_ICAdministration'
is a protocol from a third-party binding, please check that it
has the [Protocol] attribute in its api definition file, otherwise verify
that all the necessary frameworks have been referenced and native libraries
are properly linked in. (MT5211)
ICAdministration 类是库中库的一部分。我绑定的主接口类使用它,但我不绑定任何使用ICAdministration 的属性或方法。我看到了一些关于 Xamarin 7.2 的错误,并尝试添加 --registrar:legacy mtouch 选项,但没有任何运气。
似乎有大量的标志或命令行选项可以用于各种事情,但这真的不是我的地盘。我以前从来没有处理过链接器,所以 C 世界自然是一个黑暗而可怕的地方。
任何指针将不胜感激。我是否必须绑定我正在使用的所有库,或者绑定我需要的库就可以了?有什么我应该注意的陷阱吗?如果不使用属性/类的错误绑定会导致问题吗?嵌套库是个问题吗?
编辑:您可能想知道外部 Objective C 库是为 iOS 7.1 SDK 构建的(没有其他任何东西),它所包含的原始库很可能是为 iOS 5 构建的。
【问题讨论】:
-
您能显示 ICAdministration 声明的 Objective-C 标头吗?另请注意,如果一个 Objective-C 库需要另一个,both 需要添加到绑定项目中。
-
是的,所有库都包括在内。它还在 Xcode 中使用 Objective C 项目进行了测试并且工作正常。这是一个专有库,所以不确定我发布 .h 是否合法?
-
如果您有隐私方面的问题,您可以向contact@xamarin.com 询问此事,他们会为您保密。
标签: c# objective-c linker xamarin.ios