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