gpt4 book ai didi

java - JNI 检测到应用程序错误 : use of deleted local reference 0x1

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:15 27 4
gpt4 key购买 nike

我有 Java 函数,其声明如下所示:

public static void mathSendResults(final int kidId, final int points, final int correct, final int error, final float time,
final String date, final long timestamp, final String description,
final String settings, final int classNumber, final int level, final float percentage)

现在,我想通过 JNI 调用这个函数:

void NativeHelper::mathSendResults(int kidId, int points, int correct, int error, float time,
std::string date, long timestamp, std::string description,
std::string settings, int classNumber, int level, float percentage) {

cocos2d::JniMethodInfo t;
if (cocos2d::JniHelper::getStaticMethodInfo(t, AppActivityClassName, "mathSendResults",
"(IIIIFLjava/lang/String;JLjava/lang/String;Ljava/lang/String;IIF)V")){

jstring jdate = t.env->NewStringUTF(date.c_str());
jstring jdescription = t.env->NewStringUTF(description.c_str());
jstring jsettings = t.env->NewStringUTF(settings.c_str());

t.env->CallStaticVoidMethod(t.classID, t.methodID, kidId, points, correct, error, time,
jdate, timestamp, jdescription,
jsettings, classNumber, level, percentage);

t.env->DeleteLocalRef(t.classID);
t.env->DeleteLocalRef(jdate);
t.env->DeleteLocalRef(jdescription);
t.env->DeleteLocalRef(jsettings);
}
}

它应该可以工作,但应用程序崩溃并出现以下错误:

JNI DETECTED ERROR IN APPLICATION: use of deleted local reference 0x1

这对我来说看起来很奇怪。我已经尝试删除 DeleteLocalRef 调用,但它仍然崩溃。我已经在使用其他方法,但参数较少。我不确定这是否是原因。无论如何,我已经尝试用整数替换字符串(只是为了测试)所以参数的数量没有改变并且它起作用了。所以这绝对是字符串对象的问题。我也试过发送空字符串,但结果是一样的(所以它与字符串内容无关)。我也尝试将字符串数量减少到一个,但它仍然崩溃。

最佳答案

jmethodid 不是jobject,不需要(不能)删除。

关于java - JNI 检测到应用程序错误 : use of deleted local reference 0x1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51403985/

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