C 和 C++ 实现的比较
C 和C++ 代码几乎相同;唯一的差异在于用来访问 JNI 函数的方法。在 C 中,为了取出函数指针所引用的值,JNI 函数调用前要加一个(*env)-> 前缀。在 C++ 中,JNIEnv类拥有处理函数指针查找的内联成员函数。因此,虽然这两行代码访问同一函数,但每种语言都有各自的语法,如下所示。
C 语法: | cls = (*env)->FindClass(env, "Sample2"); |
C++ 语法: | cls = env->FindClass("Sample2"); |
C 语法: | mid = (*env)->GetStaticMethodID(env, cls, "intMethod", "(I)I"); |
C++ 语法: | mid = env->GetStaticMethodID(cls, "intMethod", "(I)I"); |
C 语法: | square = env->CallStaticIntMethod(cls, mid, 5); |
C++ 语法: | square = (*env)->CallStaticIntMethod(env, cls, mid, 5); |
C 语法: | (*jvm)->DestroyJavaVM(jvm); |
C++ 语法: | jvm->DestroyJavaVM(); |