java-native-interface之jni 传递类对象作为参数
Demo
阅读:175
2025-06-02 22:19:02
评论:0
我的类有另一个类的对象。当我通过 jobject 将该对象传递给我的 jni 函数时,getFieldID 表示找不到该字段。变量名绝对正确
jfieldID fidPopulation = (*env)->GetFieldID(env,cls,"mPopulation","I");
请您参考如下方法:
在此函数中,您试图访问一个名为 mPopulation 的整数类型字段。从您的问题看来,您正在尝试访问一个对象字段。 “I”表示它是一个整数。如果你想得到一些对象,你应该给它的路径一些类似“org/abc/MyClass”的东西
我正在根据下面的评论添加一些代码。
objectA是JVM传过来的,是调用这个函数的对象。 objectB 是一个参数,是类 org/demopath/ClassB.java 的对象,从 java 传递给测试函数。
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);
}
签名是我手写的,所以可能会有一些错误。始终使用生成的签名
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



