在JNI中返回一个双指针

时间:2014-01-21 13:31:37

标签: android c++ java-native-interface

我想在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函数中:

public void prueba(byte[] data, int lenbytes) {

        prueba=prueba_nativa(retorno, data, lenbytes);


    }

现在,我怎样才能接受我的价值观?

由于

1 个答案:

答案 0 :(得分:1)

您可以创建其他函数来访问本机端的数组,并将它们公开给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;