我有一个库,我想自定义它的工作(我的意思是用我的外部程序替换库的主体,这样我就可以重新排序库函数的调用),为此我必须更改一些静态变量到 extern
变量,以便库和我的程序可以同时处理它们。
我的程序在我的 Linux 台式机上运行时运行良好,但是当我尝试使用 NDK 将其移植到 Android 时,由于 extern
关键字,我无法编译它。
所以,我想知道是否有关于 Android.mk 的方法或使用 extern
关键字的替代方法来使事情正常进行。
最佳答案
你得到一个“ undefined reference ”,因为 extern
不是一个变量定义,只是一个声明。这意味着您必须在代码的其他地方有一个非 extern
声明,否则编译器不会为您的变量分配符号。
至于替代方案,不,extern
变量是在 C 中跨多个目标文件使用全局变量的唯一方法。
如果在同一个目标文件中只需要一个全局变量,可以使用static
这样符号就不会导出到其他对象。
关于C 代码中的 Android NDK 和外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15762769/