Javaのunsigned charの固定サイズの配列を含む構造体をbyte []にラップしたいとします。私のインターフェイスファイルは現在、次のようになります。SWIG Java - unsigned char [] in byte []
%module example
%include "arrays_java.i"
struct myStruct
{
unsigned char data[1024];
int len;
};
作成したJavaプロキシを取ると[]のショートを返すgetおよびsetメソッドが含まれています。
私はSWIGにshort []の代わりにbyte []を使ってJavaプロキシを生成させる最も簡単な方法は何ですか?
私は構造体を変更したくありません。これは、私が変更することができないラップしなければならない非常に大きなインターフェースの単純な例です。
私はJavaのバイトが署名されていて、Cのunsigned charの範囲をカバーしていないことに気付いていますが、データを渡すためにはshort []やcarrays.iで定義されたarray_classは、getItemメソッドとsetItemメソッドを提供し、shortメソッドはshortメソッドを返します。
だから私は、Javaのバイト[]にマップするという点で、char [1024]のようなunsigned charデータ[1024]を扱うようにswigを(何らかの型マップを使って)強制することができます。
http://swig-user.narkive.com/G7BOFpOB/swig-convert-unsigned-char-pointer-to-byte-array – user3159253
http://stackoverflow.com/questions/11564334/how-toも参照してください。 -define-swig-typemap-for-returning-unsigned-char-back-to-java – user3159253
Javaバイトの主な問題は、それが署名されていることです、技術的には 'short'はフルレンジ' 0-255'を扱う最小のタイプです。 。 – user3159253