2013-04-15 72 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()

相關問題