1

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;
}

示されている行で、ポインターが変更されていることを理解していますが、data渡した JNI の参照が更新されないため、新しいデータを取得できません。

パラメータを介して追加のデータを返すにはどうすればよいですか?

4

1 に答える 1

0

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;
}

in JNIのインスタンスには、そのプロパティByteArrayWrapperのforを使用してアクセスできる新しいバイト配列が含まれるようになりました。jfieldID

于 2012-06-02T14:07:29.437 に答える