Android:JNI函数编码风格(C风格与C++风格)

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

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

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

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

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

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

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

本人新人,有错请指正!谢谢!

你可能感兴趣的:(android,android)