3

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

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

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

4

1 回答 1

0

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

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

如果您只需要同一个对象文件中的全局变量,您可以使用static这样符号就不会导出到其他对象。

于 2013-06-18T06:45:26.183 回答