Android JNI(五)————JNI_JNI函数编码风格(C风格与C++风格)

来源:互联网 发布:宽带网络套餐 编辑:程序博客网 时间:2024/06/06 20:17

在实现JNI本地函数,调用JN函数时,C与C++的调用方式略有不同,以GetStaticFieldID()为例,说一下两种语言调用方式的不同。

jfield GetStaticFieldID(JNIEnv * env, jclass clazz, const char * name, const char * signature);
  • 1
  • 1

在C++代码中,调用GetStaticFieldID函数时,只需要传入除第一个参数env之外的另外三个参数即可。

fid = env->GetStaticFieldID(clazz,"staticIntField","I");
  • 1
  • 1

而在C语言中调用GetStaticFieldID()函数时,第一个参数env仍然要传入,并且前面env要变成(* env)。

fid =(* env)->GetStaticFieldID(env,clazz,"staticIntField","I");
  • 1
  • 1

这些差异在GetStaticFieldID()等JNI函数中普遍存在。在实现本地代码时要根据所用的语言的不同,选用恰当的方式,调用JNI函数。

原创粉丝点击