android - 使用 JNI 在 C++ 中访问二维数组字段

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

谢谢!

最佳答案

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

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

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

This是关于 JNI 类型的很好的引用。

关于android - 使用 JNI 在 C++ 中访问二维数组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051770/

相关文章:

Android NDK 段错误

android - 在 Activity 之间保持 locationListener 处于 Activity 状态

Android 按钮从布局返回 Activity

c - 如何在C中为二维数组中的每个元素动态分配内存

android - 如何解决Android Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid xxxxx (Thread-X)?

使用 Bambuser 源代码构建 Android-NDK

php - 在php和android之间传递数据的最简单方法

Android - fragment 还是自定义 View ?我应该使用哪个?

javascript - NodeJS - JSON 数组推送元素但不会增加长度

c++ - 为什么这个片段可以用 C 语言编译?