たとえば、次の構造があります。
typedef struct Foo
{
unsigned char * data;
} Foo;
data
メンバーに Java バイト配列 ( )を設定したいbyte[]
。getではなくsetメソッドのみが必要です。char * 型のメンバーをバイト配列に取得することを読みましたが、設定を行うことができません。誰でも私を助けることができますか?
更新:
いくつかの型マップを作成しましたが、成功しました:
%typemap(jni) unsigned char * data "jbyteArray"
%typemap(jtype) unsigned char * data "byte[]"
%typemap(jstype) unsigned char * data "byte[]"
%typemap(javaout) unsigned char * data {
return $jnicall;
}
%typemap(out) signed char * data {
$result = JCALL1(NewByteArray, jenv, arg1->contentLength);
JCALL4(SetByteArrayRegion, jenv, $result, 0, arg1->contentLength, $1);
}
%typemap(in) unsigned char *data {
$1 = (unsigned char *)JCALL2(GetByteArrayElements, jenv, $input, 0);
}
%typemap(javain) unsigned char *data "$javainput"
メモリリークがありますか?私はそれを間違えましたか、それとももっと信頼できる方法がありますか?