署名されたchar*型の構造体のメンバーをJavaのバイト配列に変換しようとしています。私は次の構造を持っています:
typedef struct {
signed char * content;
int contentLength;
} Foo;
私はこれを試しました:
%typemap(jni) signed char *content [ANY] "jbyteArray"
%typemap(jtype) signed char *content [ANY] "byte[]"
%typemap(jstype) signed char *content [ANY] "byte[]"
%typemap(javaout) signed char *content [ANY] {
return $jnicall;
}
%typemap(memberin) int contentLength [ANY] {
int length=0;
$1 = &length;
}
%typemap(out) signed char * content [ANY] {
$result = JCALL1(NewByteArray, jenv, length);
JCALL4(SetByteArrayRegion, jenv, $result, 0, length, $1);
}
しかし、結果はありません。FooのメソッドgetContentには、次のシグネチャがあります。
SWIGTYPE_p_signed_char getContent();
このメソッドがbyte[]を返すようにしたい。解決策はありますか?