Xamarin:使用本机库
Posted
技术标签:
【中文标题】Xamarin:使用本机库【英文标题】:Xamarin: Using Native library 【发布时间】:2013-03-23 20:37:59 【问题描述】:1) 如果 ios 和 android 原生库可用,为了使用该库开发跨平台应用程序,应该采取哪些适当、高效且更容易的步骤?绑定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:使用本机库的主要内容,如果未能解决你的问题,请参考以下文章
“无效的 Swift 支持”在 Xamarin.iOS 中使用本机 Swift 库