如何在Mono for Android(monodroid)和MonoTouch中使用本机C++库

use*_*169 9 c# mono monodevelop xamarin.ios xamarin.android

我有兴趣使用Mono for Android和MonoTouch来构建可以使用我拥有的大量C++本机库的移动应用程序.我是否可以获得有关如何调用方法或将代码合并到iOS或Android上的最终移动应用程序中的具体说明?

我在线查看了Xamarin文档,对于我来说,对于编程移动应用程序(Mono for AndroidMonoTouch)的新手来说,这是非常神秘的.如果在Visual Studio中构建一个monodroid应用程序(这是我最熟悉的),我需要从MonoDroid程序调用本机函数的具体步骤是什么.对于C库,我可以用.DLL(动态)或.LIB(静态)形式编译.我还认为动态库不能用于移动应用程序.

Rol*_*nge 9

理论上可以使用P/Invokes绑定C++库,但这不是一种特别好的方法(因为你将绑定到受损的函数名,这些函数很难理解,很可能在编译器/操作系统之间发生变化).

访问C++库的推荐方法是创建一个C API并使用P/Invoke(你可以找到很多关于如何在网上进行P/Invoking的信息,这里有一个地方可以开始:http:// mono- project.com/Dllimport).

此外,对于MonoTouch,无法使用动态库(这是Apple限制),您必须使用静态库.我不知道Mono for Android是否有这样的限制.


mig*_*aza 5

最好的选择是使用Swig为您可以从C#访问的C++库创建绑定.

这是一个描述:

http://www.swig.org/Doc1.3/CSharp.html