【问题标题】:Xamarin Objective C binding: .a within a .a, native linking failedXamarin 目标 C 绑定:.a 中的 .a,本机链接失败
【发布时间】: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


【解决方案1】:

您是否尝试过在绑定项目中将[ProtocolAttribute]添加到ICAdministration接口?

[BaseType (typeof (NSObject))]
[Protocol]
[Model]
Interface ICAdministration {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 2013-01-18
    • 2013-09-21
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多