2016-06-13 6 views
2

Swigを使ってbyte []をCに渡すJava実装を作成しようとしています。Swig:Javaのバイト配列をC言語に渡す

ガブガブ飲む:私の生成されたJavaクラス(workit_t.java)において

%include "typemaps.i" 
%apply(char *STRING, int LENGTH) { (char *buff, int len) }; 
%inline { 
    typedef struct { 
     char*   buff;   
     int   len; 
    } workit_t; 
} 

、パラメータバフは、[]の代わりにバイトの文字列です。

のJava:

public void setBuff(String value){ 
... 
} 

は、私は私のSWIG定義で間違っ何をしているのですか?

構造体を持たないシンプルなswig定義を書くと、目的のタイプのパラメータが得られます。

ガブガブ飲む:

%include "typemaps.i" 
%apply(char *STRING, int LENGTH) { (char *buff1, int *len1) }; 

のJava:

public static void Mathit(byte[] buff1, byte[] buff2) { 
... 
} 

答えて

0

まあ、私は右のそれを得ることができました。

%include various.i      
%apply char *BYTE { char *buff }; //map a Java byte[] array to a C char array 
%inline { 
    typedef struct { 
     char*   buff;   
     int   len; 
    } workit_t; 
} 

または::今

%include "typemaps.i" 
%apply(char *STRING, int LENGTH) { (char *buff, int len) }; 
%inline { 
    typedef struct { 
     char*   buff;   
     int   len; 
    } workit_t; 
} 

%include various.i      
%apply char *NIOBUFFER { char *buff }; //map Java nio buffers to C char array 
%inline { 
    typedef struct { 
     char*   buff;   
     int   len; 
    } workit_t; 
} 
関連する問題