Swig:将 Java 中的字节数组传递给 C
Swig: pass byte array in Java to C
我正在尝试创建 Java 实现以使用 Swig 将字节 [] 传递给 C。
痛饮:
%include "typemaps.i"
%apply(char *STRING, int LENGTH) { (char *buff, int len) };
%inline {
typedef struct {
char* buff;
int len;
} workit_t;
}
在我生成的javaclass(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;
}
我正在尝试创建 Java 实现以使用 Swig 将字节 [] 传递给 C。
痛饮:
%include "typemaps.i"
%apply(char *STRING, int LENGTH) { (char *buff, int len) };
%inline {
typedef struct {
char* buff;
int len;
} workit_t;
}
在我生成的javaclass(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;
}