如何正确使用Swig指针进行数学数学

时间:2016-06-13 18:31:59

标签: java c java-native-interface swig

我正在学习使用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个元素。

0 个答案:

没有答案