c++ - Windows下MonoDevelop中绑定(bind)c++静态库到项目

标签 c++ windows monodevelop xamarin.android

这里是 MonoDroid 新手

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

最佳答案

由于多种原因,您将无法在 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 命令生成共享库:

关于c++ - Windows下MonoDevelop中绑定(bind)c++静态库到项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270257/

相关文章:

c++ - 在不排序的情况下搜索数组中的重复项的最快方法是什么?

c++ - 后续: Executing a member function of a class

c# - 适用于 Android Xamarin 的 Google 帐户登录集成

windows - 从命令行删除没有文件类型的文件

linux - 多平台 Amazon-AWS 开发

c# - Ubuntu Linux 上的 Monodevelop + NAudio 告诉我“表达式表示方法组所在的类型

c++ - 二进制 GCD - 算法太慢

c++ - 在 C++ Netbeans 中构建 DLL 文件

Windows 包含 PHP?

windows - node.js 和命令行 (cmd.exe)