简体   繁体   English

将浮点数组从Java返回到jni

[英]return a float array from java to jni

I'm calling a java method from jni.This method return a float[] 我正在从jni调用java方法。此方法返回float []

   jclass javaClass = env->GetObjectClass(activityObj);
   jmethodID method = env->GetMethodID(javaClass,"findparam", "([FF)F");
   jfloatArray rotateArray = env->CallFloatMethod(activityObj, method, s1, s2);

But when i tried to compile it i had : 但是当我尝试编译它时,我有:

   error: cannot convert 'jfloat' to '_jfloatArray*' in initialization

how can i get the returnet float array?? 我怎样才能得到返回浮点数数组?

Just try to use jfloatArray imageArray = (jfloatArray) env->CallObjectMethod(Object,method); 只需尝试使用jfloatArray imageArray = (jfloatArray) env->CallObjectMethod(Object,method); It should resolve your problem . 它应该可以解决您的问题。

All array types (even primitive types) are returned as a jobject which you should then cast to the appropriate j<type>Array type. 所有数组类型(甚至是基本类型)都作为jobject返回,然后应将其jobject转换为适当的j<type>Array类型。

So your final line should read: 因此,您的最后一行应为:

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

CallFloatMethod() is for calling methods that return float . CallFloatMethod()用于调用返回float方法。 You are calling a method that returns float[] . 您正在调用一个返回float[] You should be calling CallObjectMethod() . 您应该调用CallObjectMethod()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM