我有兴趣使用Mono for Android和MonoTouch来构建可以使用我拥有的大量C ++本机库的移动应用程序。我是否可以获得有关如何调用方法或将代码合并到iOS或Android上的最终移动应用程序中的具体说明?
我在线查看了Xamarin文档,对于我来说,对于编程移动应用程序(Mono for Android和MonoTouch)的新手来说,这是非常神秘的。如果在Visual Studio中构建一个monodroid应用程序(这是我最熟悉的),我需要从MonoDroid程序调用本机函数的具体步骤是什么。对于C库,我可以用.DLL(动态)或.LIB(静态)形式编译。我还认为动态库不能用于移动应用程序。
答案 0 :(得分:9)
理论上可以使用P / Invokes绑定C ++库,但这不是一种特别好的方法(因为你将绑定到受损的函数名,这些函数很难理解,很可能在编译器/操作系统之间发生变化)。
访问C ++库的推荐方法是创建一个C API并使用P / Invoke(你可以找到很多关于如何在网上进行P / Invoking的信息,这里有一个地方可以开始:{{3 }})。
此外,对于MonoTouch,无法使用动态库(这是Apple的限制),您必须使用静态库。我不知道Mono for Android是否有这样的限制。
答案 1 :(得分:5)
答案 2 :(得分:3)
Cxxi不兼容monotouch。当我上周遇到同样的问题时,我在博客上写了关于如何让SWIG适用于单点触控:
http://blog.reblochon.org/2013/01/c-bindings-for-monotouch-using-swig.html
答案 3 :(得分:2)