Swig:将Java中的字节数组传递给C语言

我正在尝试使用Swig创建用于将byte []传递给C的Java实现。

痛饮:

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

在我生成的java类(workit_t.java)中,参数buff是String,而不是byte []。

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) { ... } 

好吧,我已经能够做对了。

之前:

 %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 *BYTE { char *buff }; //map a Java byte[] array to a C char array %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; }