Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将浮点数组从java返回到jni_Java_Android_Java Native Interface - Fatal编程技术网

将浮点数组从java返回到jni

将浮点数组从java返回到jni,java,android,java-native-interface,Java,Android,Java Native Interface,我正在从jni调用一个java方法。这个方法返回一个float[] jclass javaClass = env->GetObjectClass(activityObj); jmethodID method = env->GetMethodID(javaClass,"findparam", "([FF)F"); jfloatArray rotateArray = env->CallFloatMethod(activityObj, method, s1, s2)

我正在从jni调用一个java方法。这个方法返回一个float[]

   jclass javaClass = env->GetObjectClass(activityObj);
   jmethodID method = env->GetMethodID(javaClass,"findparam", "([FF)F");
   jfloatArray rotateArray = env->CallFloatMethod(activityObj, method, s1, s2);
但当我试图编译它时,我有:

   error: cannot convert 'jfloat' to '_jfloatArray*' in initialization
如何获取returnet浮点数组???

所有数组类型(甚至是基元类型)都作为
jobject
返回,然后应将其转换为相应的
jArray
类型

所以你的最后一行应该是:

jfloatArray rotateArray = (jfloatArray)env->CallObjectMethod(activityObj, method, s1, s2);
所有数组类型(甚至是基元类型)都作为
jobject
返回,然后应将其转换为相应的
jArray
类型

所以你的最后一行应该是:

jfloatArray rotateArray = (jfloatArray)env->CallObjectMethod(activityObj, method, s1, s2);

CallFloatMethod()
用于调用返回
float
的方法。您正在调用一个返回
float[]
的方法。您应该调用
CallObjectMethod()

CallFloatMethod()
用于调用返回
float
的方法。您正在调用一个返回
float[]
的方法。您应该调用
CallObjectMethod()

只要尝试使用
jfloatArray imageArray=(jfloatArray)env->CallObjectMethod(Object,method);

它应该可以解决您的问题。

只需尝试使用
jfloatArray imageArray=(jfloatArray)env->CallObjectMethod(Object,method);

它应该可以解决您的问题。

我想我找到了:使用CallObjectMethod。例如:jmethodID myMethod=(*env)->GetMethodID(myClass,“myMethod”,“()[I”);jintArray retval=(jintArray)(*env)->CallObjectMethod(myObject,myMethod);我想我找到了:使用CallObjectMethod。例如:jmethodID myMethod=(*env)->GetMethodID(myClass,“myMethod”,“()[I”);jintArray retval=(jintArray)(*env)->CallObjectMethod)(myObject,myMethod);