1

我想在 C 库(例如 libA)中导出一些静态变量,以便在其他 C 文件中从外部使用它们。

我曾经为桌面应用程序使用extern关键字并且它正在工作,但是当我转移到 JNI 和 Android 时,extern关键字无法解决问题,因为在尝试构建 libA 的 *.so 时,无论我的其他 C 文件如何(它使用 libA 静态变量),对于 libA 的所有“外部变量”,我得到了“未定义引用”的编译器错误。

为此,我在生成 libA 的 *.so 时尝试链接 C 文件,但在运行时,我注意到变量具有不同的地址,这不是extern关键字的正常结果。(这意味着我正在操作不同的地址<=>不同的变量而不是相同的地址<=>“相同的变量”)。

那么,有没有办法解决这个问题?也许使用 memcpy 或 memset 如果它是正确的方法,请怎么做?

提前致谢。

BR

4

1 回答 1

0

在 JNI 文件中设置环境变量对您有帮助吗?

例如: setenv("GLOBALVARIABLE", "ON", 1);

于 2013-04-21T01:29:26.047 回答