繁体   English   中英

通过引用从Java返回到JNI

[英]Return from java to JNI by reference

我需要从JNI调用的java方法中传递一个数组和一个整数。

public static int foo(byte[] data)
{
    byte[] buffer;
    // Fill buffer with data
    data = buffer;  // <--- This doesn't work as the pointer is changed
    return bufferSize;
}

在指示的行上,据我了解,指针已更改,但是我在JNI中对传入的data的引用不会更新,因此我无法获取新数据。

我如何通过参数返回额外的数据?

归功于K-ballo:

字节数组必须位于包装器类中。

class ByteArrayWrapper {
    public ByteArrayWrapper() {}
    public byte[] array;
}

在JNI中,我创建了此类的实例并将其传递给方法。

public static int foo(ByteArrayWrapper data) {
    byte[] buffer;
    // Fill buffer with data
    data.array = buffer;
    return bufferSize;
}

现在,JNI中的ByteArrayWrapper实例包含新的字节数组,可以使用该属性的jfieldID对其进行访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM