首页 > 编程 > Java > 正文

JNI c代码回调java空方法

2019-11-09 18:58:32
字体:
来源:转载
供稿:网友

首先在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可以生成签名


上一篇:java IO流

下一篇:javaMail java邮件发送

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表