【问题标题】:Access 2D array field in C++ using JNI使用 JNI 访问 C++ 中的二维数组字段
【发布时间】:2012-08-21 09:18:51
【问题描述】:

我有一个这样的 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 数组的专用函数,所以我只是将其视为对象并将其转换为对象数组。有什么提示吗?

谢谢!

【问题讨论】:

  • Two dimensional arrays in JNI 的可能重复项
  • 这不是重复的。引用的帖子提到了一个类似但不同的问题。我没有在网上找到任何从字段中获取二维数组的参考资料。
  • paramsFid 有效吗?使用 LogCat 函数找出答案。

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


【解决方案1】:

您的 GetFieldID 调用看起来返回 null。您需要删除类型中的分号,使其看起来像:

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

分号用于类名的末尾,而不是原始类型。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    相关资源
    最近更新 更多