使用JNI在C ++中访问2D数组字段

时间:2012-08-21 09:18:52

标签: android arrays android-ndk java-native-interface

我有一个像这样的Java类:

class Blah{
    float[][] params;
}

在JNI,我尝试过这样的参数:

jclass cls = env->GetObjectClass(obj);
jfieldID paramsFid = env->GetFieldID(cls, "params", "[[F;");
jobjectArray paramArray = (jobjectArray)env->GetObjectField(obj, paramsFid);

但它总是在GetObjectField上失败,我找不到2D数组的专用函数,所以我只是将它作为一个对象处理并将其转换为一个对象数组。任何提示?

谢谢!

1 个答案:

答案 0 :(得分:2)

您的GetFieldID调用看起来像是返回null。您需要删除该类型中的分号,如下所示:

jfieldID paramsFid = env->GetFieldID(cls, "params", "[[F");

分号用于类名的末尾,而不是基本类型。

This是对JNI类型的一个很好的参考。