[英]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.