我正在学习使用Swig,因此我可以为大型项目实现C / C ++到Java接口。我开始很简单。
首先,我在C中有一个Add函数:
//taken from swig 3.0 samples directory
void add(int* x, int* y, int* result)
{
*result = *x + *y
}
接下来,我有一个swig定义:
%module example
%include "typemaps.i"
void add(int *INPUT, int *INPUT, int *OUTPUT);
//or alternatively. version #2:
%include "typemaps.i"
%apply int *INPUT {int *x, int *y};
%apply int *OUTPUT {int *r};
void add2(int *x, int *y, int *r);
接下来,Java程序:
System.out.println("Trying the typemap library");
int[] r = {0};
example.add(37,42,r);
System.out.println(" 37 + 42 = " + r[0]);
//or alternatively. version #2
example.add2(37,42,r);
System.out.println(" 37 + 42 = " + r[0]);
现在,我的问题是:在Java中,我希望能够从实际数组中添加所有变量(而不仅仅是单个值,如37或42)。我想用say,byte []来做这个。例如,
byte[] x = new byte[100];
byte[] y = new byte[100];
byte[] r = new byte[100];
或
Byte x = new Byte("100");
Byte y = new Byte("100");
Byte r = new Byte("100");
如何将这些java字节数组或字节对象分配给我刚刚包装的C / C ++函数,同时确保代码的两边(java和C / C ++)都知道数组大小?我希望C / C ++中的包装函数能够添加100个元素。