JNI c代码回调java空方法

    xiaoxiao2021-03-26  30

    首先在class JNI中定义

    public class JNI { static { System.loadLibrary("hello");//需要加载的so文件的名称 } //传递两个int类型的变量给C public native void callbackvoidmethod(); public void helloFromJava(){ System.out.println("hello from Java"); } } 然后在c代码中写

    JNIEXPORT void JNICALL Java_com_example_feisou_a02_1helloworld_JNI_callbackvoidmethod (JNIEnv *env, jobject thiz){ jclass claz = (*env)->FindClass(env, "com/example/feisou/a02_helloworld/JNI"); jmethodID methodID = (*env)->GetMethodID(env, claz, "helloFromJava", "()V"); (*env)->CallVoidMethod(env, thiz, methodID); } 1、获取字节码对象 jclass (*FindClass)(JNIEnv*, const char*); 2、获取Method对象 jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*); 3、通过字节码对象创建一个Object(即是claz) 4、通过对象调用方法 Android Studio的文件在工程目录app\build\intermediates\classes中,使用javap -s com.example.feisou.a02_helloworld.JNI可以生成签名

    转载请注明原文地址: https://ju.6miu.com/read-662415.html

    最新回复(0)