0

MonoDroid 新手在这里

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

4

1 回答 1

1

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

  • Android 是 ELF,iOS 是 Mach-O
  • Android 代码需要编译为 Position Independent Code ( -fPIC),因为它最终会在 a 中.so,而 iOS 则没有这个要求 (afaik)。
  • 它们可能有不同的 ABI 调用约定等。

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

鉴于无论如何您都需要重新编译,因此.a为 Android 创建文件的意义很小。只需创建一个.so. 请参阅Android NDKdocs/ANDROID-MK.html中的内容。

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

于 2012-04-23T16:17:16.323 回答