android - 创建 .a 文件而不是 .so 使用 android studio?

标签 android c++ c android-studio

如何使用 android studio 从 c 源代码创建 .a 文件而不是 .so

如果可能,那么我也想知道如何加载它们以及使用 .a 文件代替的优缺点。所以

最佳答案

Android 依赖 Java 的 System.loadLibrary()加载 native 代码。此调用使用 dl* family of functions加载动态库(通常与扩展名 .so 相关联)。 动态库可以指定其他库作为它的依赖,依次加载。 打开该库后,JVM 会探测它是否具有特制名称的函数,这些名称已绑定(bind)到相应的 Java 方法。

相比之下,.a 文件是一个静态库。它只是目标文件 (.o) 的存档,供编译时通过static 链接使用。

回答您的问题:是的,您可以更改您的 CMakeLists.txt 以创建静态库,但最终您必须将它们链接到一个动态 .so 中才能在 Android 中加载它.例如参见 this answer 的底部其中许多预建静态库与单个 .cpp 文件链接在一起以生成动态库。

关于android - 创建 .a 文件而不是 .so 使用 android studio?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58542406/

相关文章:

android - 如何使用 Android 的 NDK 来使用 mkfifo

android - Android MediaPlayer 上的 RTP

java - 删除特定号码的android通话记录

android - 使用 ViewPager 的带有图标的选项卡,如何布局它们?通过附加一些布局文件

c++ - 无法从 cin.get() 获取字符

c++ - 学习 C++ 标准库——一个好主意?

c++ - 为什么我的 vector 下标超出范围?

计算 1 到 N 的整数中 0 出现的次数

c - 将/dev/urandom 读入C 字符串缓冲区

arrays - 如何在 C 中打印出未知大小的字符串数组?