痛饮:通字节数组在Java中为C [英] Swig: pass byte array in Java to C
本文介绍了痛饮:通字节数组在Java中为C的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想创建Java实现使用痛饮传递的byte []为C。
痛饮:
%包括typemaps.i
%适用(字符*字符串,整数长度){(字符* BUFF,INT LEN)};
%一致 {
typedef结构{
字符* BUFF;
INT LEN;
} workit_t;
}
在我生成的Java类(workit_t.java),参数的buff是一个String,而不是一个byte []。
Java的:
公共无效setBuff(字符串值){
...
}
我是什么,我痛饮定义做错了什么?
当我写一个简单的定义痛饮,没有结构,我得到参数所需的类型。
痛饮:
%包括typemaps.i
%适用(字符*字符串,整数长度){(字符* BUFF1,为int * LEN1)};
Java的:
公共静态无效Mathit(字节[] BUFF1,字节[] buff2){
...
}
解决方案
好了,我已经能够得到它的权利。
在
%包括typemaps.i
%适用(字符*字符串,整数长度){(字符* BUFF,INT LEN)};
%一致 {
typedef结构{
字符* BUFF;
INT LEN;
} workit_t;
}
现在
%包括various.i
%申请的char * BYTE {字符* BUFF}; //映射一个Java byte []数组一个C字符数组
%一致 {
typedef结构{
字符* BUFF;
INT LEN;
} workit_t;
}
或者
%包括various.i
%申请的char * NIOBUFFER {字符* BUFF}; //地图的Java NIO的缓冲区为C字符数组
%一致 {
typedef结构{
字符* BUFF;
INT LEN;
} workit_t;
}
I am trying to create Java implementation for passing byte [] to C using Swig.
Swig:
%include "typemaps.i"
%apply(char *STRING, int LENGTH) { (char *buff, int len) };
%inline {
typedef struct {
char* buff;
int len;
} workit_t;
}
In my generated java class (workit_t.java), the parameter buff is a String, instead of a byte [].
Java:
public void setBuff(String value){
...
}
What am I doing wrong in my swig definition?
When I write a simple swig definition with no struct, I get the desired type of parameter.
Swig:
%include "typemaps.i"
%apply(char *STRING, int LENGTH) { (char *buff1, int *len1) };
Java:
public static void Mathit(byte[] buff1, byte[] buff2) {
...
}
解决方案
Well, I have been able to get it right.
Before:
%include "typemaps.i"
%apply(char *STRING, int LENGTH) { (char *buff, int len) };
%inline {
typedef struct {
char* buff;
int len;
} workit_t;
}
Now:
%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;
}
Or:
%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中为C的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文