gpt4 book ai didi

c++ - GetFloatArrayElements 得到错误的结果

转载 作者:行者123 更新时间:2023-11-30 04:46:02 24 4
gpt4 key购买 nike

我已经从互联网上搜索了解决方案,我的代码看起来与其他解决方案相同。我认为 GetFloatArrayElements 用于获取数组元素。

这是我的代码:

JNIEXPORT void JNICALL
Java_draw(JNIEnv *env, jfloatArray point){
float temp[6];
float x = 0;

jfloat *body = env->GetFloatArrayElements(point, 0);

for(int i =0; i < 6 ; i++){
temp[i] = body[i];
x+= body[i];
__android_log_print(ANDROID_LOG_ERROR, "TRACKERS123", "[%f]", *(body + i) );
}

env->ReleaseFloatArrayElements(point, body, 0);
}

结果总是这样:

[21.774231]
[0.000000]
[21.707932]
[21.776413]
[0.000000]
[0.000000]

我已经从调试中检查了调用代码。这是示例值:

debug

最佳答案

Java_draw 方法的签名错误:(source)

  • 第一个参数始终是 JNIEnv*
  • 第二个参数取决于方法是静态的还是非静态的:
    • 如果是静态的,第二个参数是一个jclass
    • 如果是非静态的,第二个参数是一个代表对象实例的jobject
  • 第三个参数是您的float[]

所以签名应该是:

JNIEXPORT void JNICALL Java_draw(JNIEnv *env, jclass klass, jfloatArray point) // static

JNIEXPORT void JNICALL Java_draw(JNIEnv *env, jobject obj, jfloatArray point) // non-static

关于c++ - GetFloatArrayElements 得到错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57000182/

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