[英]Modify Java object field from JNI
我想在 java (android) 中声明一个 int a = 5 并使用 ndk 和 c/c++ 修改它,并在 jni 中更改 int a 的值,基本上它访问声明了哪个变量的 ram 段,但我不知道怎么做 ?
public class dataclass {
int a = 5;
int b = 5;
static {
System.loadLibrary("native-lib");
}
public native void changeValue(dataclass mclass);
}
假设您在 Java changeValue
声明为static
函数,您的本机代码将接收三个参数:一个JNIEnv * env
、一个jclass cls
和jobject obj
。 后者是您要操作的dataclass
的实例。
该方法是标准的:
env->FindClass("dataclass")
或env->GetObjectClass(obj)
获取对dataclass
类的引用env->GetFieldID(dataClass, "a", "I")
修改的字段的句柄。 这里的I
是与int
关联的原始类型。env->SetIntField(obj, fieldId, new_value)
进行更改
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.