2013-04-15 38 views
1

我打电话从jni.This方法的Java方法返回一个float []从Java返回一个int数组给JNI

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浮点数组?

+0

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

回答

1

只需尝试使用jfloatArray imageArray = (jfloatArray) env->CallObjectMethod(Object,method); 它应该可以解决您的问题。

0

所有数组类型(甚至是原始类型)都会返回为jobject,然后应将其转换为适当的j<type>Array类型。

因此,最终的行应为:

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

CallFloatMethod()是调用返回float方法。您正在调用返回float[]的方法。你应该打电话给CallObjectMethod()

相关问题