jni将类对象作为参数传递

时间:2011-07-25 07:13:05

标签: java-native-interface android-ndk

我有一个类,它有另一个类的对象。当我通过jobject将该对象传递给我的jni函数时,getFieldID表示找不到该字段。变量名称绝对正确

jfieldID fidPopulation = (*env)->GetFieldID(env,cls,"mPopulation","I");

1 个答案:

答案 0 :(得分:0)

在此函数中,您尝试访问名为mPopulation的整数类型字段。从您的问题看,您似乎正在尝试访问对象字段。 “我”表示它是一个整数。如果你想获得一些物体,你应该给它的路径一些东西,比如“org / abc / MyClass”  我按照以下评论添加了一些代码  objectA由JVM传递,是调用此函数的对象。 objectB是一个参数,是类org / demopath / ClassB.java的一个对象,并从java传递给test函数。

    Java_MyTestFunction( JNIEnv *env, jobject objectA, jobject objectB) {  
        jclass cls = (*env)->FindClass(env, "org/demopath/ClassB");  
        jfieldID fid = (*env)->GetFieldID(env, cls, "mPopulation ", "I");  
        jint population = (*env)->GetIntField(env, objectB, fid);  
    }      

我手写了签名,因此可能会有一些错误。始终使用生成的签名