gpt4 book ai didi

java - 不明白为什么 JNIEnv->GetFieldID 失败

转载 作者:行者123 更新时间:2023-12-02 13:42:36 24 4
gpt4 key购买 nike

在java中我有:

package com.mypkg.utils;
...

public class attitude_calculator
{
private long native_ptr_;
...
public native RealMatrix R();
}

在 jni 层中,我需要访问 native_ptr_。我正在尝试这样做:

JNIEXPORT jobject JNICALL 
Java_com_mypkg_utils_attitude_1calculator_R(JNIEnv *jenv,
jobject jobj)
{
myns::AttitudeCalculator *nobj = nullptr;
jlong addr = 0;
jfieldID jfid = 0;
jclass jcls;

jcls = jenv->GetObjectClass(jobj);
jfid = jenv->GetFieldID(jcls, "native_ptr_",
"Lcom/mypkg/utils/attitude_calculator$native_ptr_;");
if (jfid == nullptr || jfid == NULL) {
...
}
...
}

调用 GetFieldID 会产生

java.lang.NoSuchFieldError。

调用GetFieldID的正确方法是什么?

最佳答案

native_ptr_ 是一个 long,因此它的签名是 "J"不是 "Lcom/mypkg/utils/attitude_calculator$native_ptr_;"

所以调用应该是:

jfid = jenv->GetFieldID(jcls, "native_ptr_", "J");

关于java - 不明白为什么 JNIEnv->GetFieldID 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42656258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com