Android NDK 和 C 代码中的 extern 变量

原文 标签 android c android-ndk extern

我有一个库,我想自定义它的工作(我的意思是用我的外部程序替换库的主要内容,以便我可以重新排序库函数的调用),为此我不得不将一些静态变量更改为 extern 变量所以图书馆和我的程序可以同时处理它们。

我的程序在 Linux 台式机上运行时运行良好,但是当我尝试使用 NDK 将其移植到 Android 时,由于 extern 关键字,我无法编译它。

所以,我想知道是否有一种关于 Android.mk 的方法或替代使用 extern 关键字的方法来使事情工作。

最佳答案

你得到一个“ undefined reference ”,因为 extern不是变量定义,只是声明。这意味着你必须有一个非 extern在代码中的其他地方声明,否则编译器不会为您的变量分配符号。

至于替代方案,不,是 extern变量是在 C 中跨多个目标文件的全局变量的唯一方法。

如果在同一个目标文件中只需要一个全局变量,可以使用 static所以符号不会导出到其他对象。

关于Android NDK 和 C 代码中的 extern 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15762769/

相关文章:

android - 如何降级Google Play中的api?

android - Google 登录(使用 Firebase)突然停止工作?

c - 将null传递给struct

c - 将struct数组传递给函数

android-studio - 有没有办法在 Android Studio 中禁用 "Updating Symbols..."进程?

android - 如何在下实现带点的图库滑动

android - Unity Build - 异常 : il2cpp. exe 未正常运行

c - 在while循环条件下无效读取大小1

java - 如何使用 JNA 将 com.sun.jna.Structure 从 Java 传递到 C 中的结构

python - 使用 python 为 arm 交叉编译 gdb 失败