日期:2014-05-20  浏览次数:20637 次

用javah生成JNI头文件的时候,发现自定义的函数名前自动加了一个数字1,为什么呢?
例如:
函数名:nxw_at_fm(),nxw_chg_nmode()
头文件里变成了: Java_Nwar_nxw_1at_1fm, Java_Nwar_nxw_1chg_1nmode
这些1的前缀是默认规则?

------解决方案--------------------
如果你不想函数名中有1你就不要让函数名中用'_',因为jni吧C函数名映射成java方法名的时候是com_mypackage_myclass_mymethod():com.mypackage.myclass.mymethod();也就是说jni是依靠'_'来间隔包、类、方法的,但是如果你的方法名中有'_'字符的话,jni必须能够区分方法名中的'_'字符还是间隔符,所以用加一个1后缀的方式来区分。