簡體   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