JNI在C和C++中调用有什么不同?

13 浏览
0 Comments

JNI在C和C++中调用有什么不同?

我有以下使用Java本地接口的C代码,但是我想将其转换为C++,但不确定如何操作。

 #include 
 #include 
 #include "InstanceMethodCall.h"
 JNIEXPORT void JNICALL 
 Java_InstanceMethodCall_nativeMethod(JNIEnv *env, jobject obj)
 {
     jclass cls = (*env)->GetObjectClass(env, obj);
     jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "()V");
     if (mid == NULL) {
         return; /* method not found */
     }
     printf("In C\n");
     (*env)->CallVoidMethod(env, obj, mid);
 }

Java程序:

 class InstanceMethodCall {
     private native void nativeMethod();
     private void callback() {
         System.out.println("In Java");
     }
     public static void main(String args[]) {
         InstanceMethodCall c = new InstanceMethodCall();
         c.nativeMethod();
     }
     static {
         System.loadLibrary("InstanceMethodCall");
     }
 }

JNI与C和C++交互的区别是什么?非常感谢您的帮助。

谢谢,Pete

0