如何解决JNI 设置字符串字段
我尝试使用 C 和 Java 之间的结构。 为此,我创建了一个 Java 类:
public class DriveInfo {
public String val1;
public String val2;
public String val3;
}
这是我在 Java 函数中使用的:
private void getDriveInfos() {
DriveInfo newInfo = new DriveInfo();
newInfo.val1 = "Test";
getDriveInfo(newInfo);
logModel.add(logModel.getSize(),newInfo.val1);
}
getDriveInfo 在 JNI 接口中声明为:
private native int getDriveInfo(DriveInfo mClass);
JNIEXPORT jint JNICALL Java_JNIViie_getDriveInfo
(JNIEnv *env,jobject job,jobject jStruct);
JNIEXPORT jint JNICALL Java_JNIViie_getDriveInfo
(JNIEnv *env,jobject jobj,jobject jStruct){
jclass clazz;
jfieldID fid;
jstring buffer = env->NewStringUTF("myname");
clazz = env->GetObjectClass(jStruct);
fid = env->GetFieldID(clazz,"val1","Ljava/lang/String;");
if(clazz == 0){
return 0;
}
env->SetObjectField(clazz,fid,buffer);
return 0;
}
我预计 getDriveInfo
函数会打印出 "myname"
而不是 "test"
。
我现在的问题是,我做错了什么以至于 val1
不包含 "myname"
字符串?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。