2013-04-21 60 views
1

我想导出一些静态变量在C库(例如libA)从其他C文件从外部使用它们。导出C本地变量:JNI运行时行为问题

我用extern关键字为桌面应用程序,但是这是工作,当 我搬到JNI & Android上,extern关键字,因为试图建立*。所以力霸的时候不能做的伎俩,无论我的其他C文件(使用libA静态变量),我都对libA的所有“extern变量”都有“未定义引用”的编译器错误。为此,我在生成libA的* .so时尝试链接C文件,但在运行时,我注意到变量具有不同的地址,这不是extern关键字的正常结果。 (这意味着我操纵不同的地址< =>不同的变量,而不是相同的地址< =>“相同的变量”)。

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

在此先感谢。

B.R

回答

0

会在JNI文件中设置一个环境变量帮助你吗?

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

+0

感谢您的回答,但我不认为这可以解决问题。也许这可能是生成* .so的一些替代方法,但我不明白它将如何解决运行时行为(不同的地址) – 2013-04-21 10:25:24