将c ++静态库绑定到Windows下的MonoDevelop中的项目

时间:2012-04-22 17:27:28

标签: c++ windows monodevelop xamarin.android

MonoDroid新手在这里

我想在MonoDroid下编写的Android应用程序中使用静态c ++库(它是静态的,因为我想稍后将它移植到MonoTouch)。我在Windows下使用MonoDevelop,找不到解释如何编译和链接这样一个库的教程。我现在正尝试使用SWIG工具包将PInvoke绑定到MonoDroid,并且需要知道例如我应该将哪个编译器用于c ++库,我应该在哪里部署生成的lib文件,以便MonoDroid可以使用它等。 任何人都可以指导我做一些有用的事吗?

1 个答案:

答案 0 :(得分:1)

由于各种原因,您将无法在iOS和Android之间使用相同的.a文件:

  • Android是ELF,iOS是Mach-O
  • Android代码需要编译为位置独立代码(-fPIC),因为它最终会在.so中,而iOS将不具备该要求(afaik)。
  • 他们可能有不同的ABI呼叫约定等。

您需要为每个目标平台重新编译源代码。

鉴于您无论如何都需要重新编译,为Android创建.a文件是最重要的。只需创建一个.so。请参阅Android NDK中的docs/ANDROID-MK.html

您还可以查看SanityTests示例,该示例使用Android NDK ndk-build命令生成共享库: