Xamarin:使用本机库

Posted

技术标签:

【中文标题】Xamarin:使用本机库【英文标题】:Xamarin: Using Native library 【发布时间】:2013-03-23 20:37:59 【问题描述】:

1) 如果 iosandroid 原生库可用,为了使用该库开发跨平台应用程序,应该采取哪些适当、高效且更容易的步骤?绑定Android库还是iOS?如果我们绑定 Android 原生库,是否可以在 Xamarin.iOS 应用程序中使用这个绑定的库,反之亦然?

2) 如果有可用的 C++ 库,是否可以使用该库来开发跨平台应用程序?

提前致谢!

(只是 Xamarin 的初学者,如果问题似乎不合适,请原谅)

【问题讨论】:

【参考方案1】:

    原生 iOS 和 Android 库通常是完全不同的(iOS 库通常用 Objective-C 编写,而 Android 库则用 Java 编写),因此它们的绑定会有所不同。即使 API 相同,Objective-C 和 Java 之间的差异也足以使绑定也必须不同。

    是的,可以在 iOS 和 Android 项目中使用 C++,但机制不同。这里有几个选项:

    使用 SWIG 等工具为 C++ 库创建托管绑定。 This 也是一本有趣的书。

    创建一个包装 C++ 库的 C 库,然后使用托管代码中可用的标准 P/Invoke 机制与 C 库进行交互。

【讨论】:

谢谢!我正在使用的库不包含特定于平台的代码,仅用于将设备连接到远程服务器。该库可用于 Objectve-C、Java 和 C++。我需要绑定到它以作为 C# 类库访问。那么,如果我绑定这些库中的任何一个,我可以跨不同的 Xamarin 项目使用吗?例如:如果我将可用的 java 库绑定到 C#,我是否也可以在我的 Xamarin.iOS 项目中使用这个绑定的库? 不,您将无法在 iOS 上使用 Java 绑定(也无法使用 Java 库本身),因为 Java 仅在 Android 上运行。但是,您应该能够在 iOS 和 Android 上使用 C++ 版本(在这种情况下,托管绑定也可以共享)。 所以,现在我决定在我的跨平台应用程序上使用 C++ 版本的库。非常感谢。

以上是关于Xamarin:使用本机库的主要内容,如果未能解决你的问题,请参考以下文章

使用 iPhone 本机应用程序中的 Xamarin 库

如何在 Xamarin.iOS 中正确包装本机 c 库

使用本机库中的功能的 Xamarin 表单应用程序

“无效的 Swift 支持”在 Xamarin.iOS 中使用本机 Swift 库

Xamarin.Android Java绑定库运行时失败访问本机库

从 Xamarin.iOS 绑定库中引用 Storyboard