混合编程jni 第五篇之C++ 访问 Java代码

Posted 香菜聊游戏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混合编程jni 第五篇之C++ 访问 Java代码相关的知识,希望对你有一定的参考价值。

 

今天继续JNI的学习,因为是混合编程,所以在写的过程中需要进行交互

Java可以调用C++,C++也可以调用Java,

虽然作为Java程序很少写C++,但是既然是做JNI开发,就不得不了解下如果

在C++中访问Java的属性和方法,开始吧

访问属性

对象属性

//    获得方法的id
jfieldID GetFieldID(JNIEnv *env, jclass clazz,const char *name, const char *sig);
//    读取属性的值
NativeType Get<type>Field(JNIEnv *env, jobject obj,jfieldID fieldID);
//    设置属性的值
void Set<type>Field(JNIEnv *env, jobject obj, jfieldID fieldID,NativeType value);

返回类的实例(非静态)字段的字段 ID。该字段由其名称和签名指定。

访问器函数的GetField和SetField系列使用字段 ID 来检索对象字段。

来个例子

 /* Get a reference to obj\'s class */ 
     jclass cls = (*env)->GetObjectClass(env, obj); //第一步
     printf(

以上是关于混合编程jni 第五篇之C++ 访问 Java代码的主要内容,如果未能解决你的问题,请参考以下文章

混合编程jni 第十篇之JNA初见

混合编程jni 第四篇之引用和异常

混合编程jni 第十篇之JNA初见

混合编程jni 第六篇之native 中字符串和数组的操作

混合编程jni 第四篇之引用和异常

混合编程jni 第九篇之Jni总结