在JNI中返回双重指针

Return a double pointer in JNI

本文关键字:指针 返回 JNI      更新时间:2023-10-16

我想返回JNI中的双数组的指针,然后在Java的代码中使用此值。所以我这样做了:

JNIEXPORT jlong JNICALL Java_com_sistoleaudiocapture_Processing_prueba_1nativa(
        JNIEnv * env, jclass, jlong retorno, jbyteArray data, jint lenbytes) {
//PROCESS
long dirt;
dirt=(long)d_est;
    return(dirt);


}

在我的Java Funcition中:

public void prueba(byte[] data, int lenbytes) {
        prueba=prueba_nativa(retorno, data, lenbytes);

    }

现在,我该如何计算我的价值?

谢谢

您可以创建其他功能以访问本机侧的数组,并将其暴露于Java。或者,您可以在本机代码中创建jdoublearray,然后将其返回Java。

const double * arrayPtr = (const double  *)&yourDoubleArray;
jint lengthOfArray = 0; //Fill dynamically with the length of your native double array.
jdoubleArray doubleArray = (*env)->NewDoubleArray(env, lengthOfArray);
(*env)->SetDoubleArrayRegion( env, doubleArray, 0, 16, arrayPtr);
return doubleArray;