【问题标题】:How to create bindings for Xamarin.iOS?如何为 Xamarin.iOS 创建绑定?
【发布时间】:2016-07-31 20:13:39
【问题描述】:

我有一个 iOS 静态库(.a 和头文件),我想将此库绑定到 Xamarin.iOS

我在 Xamarin 站点 here 上找到了提到的绑定步骤,在本演练中,他们使用了库的源代码。但我只有.a 文件和头文件。

是否可以在没有源代码的情况下绑定静态库。

【问题讨论】:

  • 本指南仅使用源代码构建.a 文件。其余部分使用标头和二进制文件完成。 Objective Sharpie 只需要标题。
  • 如果您阅读该链接,他们会从源代码开始构建库,然后绑定该库。所以这个链接告诉你所有你需要知道的,你只需要从一半开始。

标签: ios xcode binding xamarin xamarin.ios


【解决方案1】:

是的,这可以通过 Objective Sharpie(https://developer.xamarin.com/guides/cross-platform/macios/binding/objective-sharpie/)

Objective Sharpie 使用clang 来解析生成高质量API 定义的头文件。对于Objective Sharpie 无法解析/生成的东西,您需要对自己进行规范化。这些生成的文件称为ApiDefinition.csStructsAndEnums.cs

为此,您可以使用sharpie bind 命令。

https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/#Using_Objective_Sharpie

生成相应的模板/脚手架后,您可以将这些项目传递给bmac/btouch 绑定工具,该工具将为您的平台生成绑定(分别为 Mac/iOS)。

如果您仍然遇到麻烦,这里有一个高级示例也应该有所帮助:

https://developer.xamarin.com/guides/cross-platform/macios/binding/objective-sharpie/examples/advanced/

【讨论】:

    【解决方案2】:

    您不需要源代码即可与 Objective Sharpie 绑定。您只需要.a 库和标题。

    这是一个例子:

    sharpie bind -output Binding -sdk iphoneos8.1 \
    -scope build/Headers build/Headers/SomeHeader.h \
    -c -Ibuild/Headers -arch arm64
    

    Objective Sharpie 只输出两个文件:Binding/ApiDefinitions.csBinding/StructsAndEnums.cs

    然后根据需要调整绑定并再次运行。

    调整完成后,现在可以将这两个文件添加到 Xamarin Studio 中的绑定项目或直接传递到 touch (iOS) 或 mac (MacOS X) 工具以生成最终绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 2015-07-20
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      相关资源
      最近更新 更多