我想在 C 库(例如 libA)中导出一些静态变量,以便在其他 C 文件中从外部使用它们。
我曾经为桌面应用程序使用extern
关键字并且它正在工作,但是当我转移到 JNI 和 Android 时,extern
关键字无法解决问题,因为在尝试构建 libA 的 *.so 时,无论我的其他 C 文件如何(它使用 libA 静态变量),对于 libA 的所有“外部变量”,我得到了“未定义引用”的编译器错误。
为此,我在生成 libA 的 *.so 时尝试链接 C 文件,但在运行时,我注意到变量具有不同的地址,这不是extern
关键字的正常结果。(这意味着我正在操作不同的地址<=>不同的变量而不是相同的地址<=>“相同的变量”)。
那么,有没有办法解决这个问题?也许使用 memcpy 或 memset 如果它是正确的方法,请怎么做?
提前致谢。
BR