実際の引数として渡されたバイト配列を埋める関数を開発しようとしています。JNAのドキュメントの例に従っていますが、機能していません。ドキュメントには次のように記載されています。
// Original C declaration allocate_buffer <br>
void (char ** bufp, int * lenp);
// Equivalent JNA mapping
void allocate_buffer (PointerByReference bufp, IntByReference lenp);
// Usage
PointerByReference PointerByReference pref = new ();
IntByReference IntByReference iref = new ();
lib.allocate_buffer (pref, iref);
Pref.getValue Pointer p = ();
byte [] buffer = p.getByteArray (0, iref.getValue ());
Cでの私の機能は次のとおりです。
__declspec (dllexport) void allocate_buffer (char ** bufp, int * lenp)
{
char array [4];
array [0] = 0;
array [2] = 1;
array [3] = 2;
array [4] = 3;
* bufp = array;
* lenp = 4;
}
しかし、配列値を出力すると結果は次のようになります: 0 20 48 2
関数 allocate_buffer を適切に実装する方法は? または、問題は Java コードにありますか?
ありがとう!