JNI在C和C++中调用有什么不同?
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