【问题标题】:Android NDK and extern variables in C codeC 代码中的 Android NDK 和外部变量
【发布时间】:2013-03-23 16:02:10
【问题描述】:

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

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

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

【问题讨论】:

  • 您收到的确切错误消息是什么,它抱怨的代码是什么样的?
  • 我收到“未定义的引用”错误消息
  • 能否展示您的 Android.mk 文件和 C 源代码?

标签: android c android-ndk extern


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 2023-03-25
    • 1970-01-01
    • 2013-03-19
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多