[英]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.