我有一个C++中的方法,它将一个双精度数组作为参数。我从Java调用这个方法,需要传递一个双精度数组。 C++例程读取和修改数组的值,我需要Java中的更新值。我该怎么做呢?如何使用Swig将数组从Java传递到C++?
例如,以C++程序:
void myMethod(double *values, int size) {
for (int i=0; i < size; i++) {
values[i] = 2*values[i];
}
}
和Java代码:
double[] values = { 1.3, 1.1 };
myMethod(values,values.length);
System.out.println(values[0]); // prints 2.6
我猜myMethod的通话不能像上面的电话进行... ...还是可以? Swig有必要完成这项工作。如果我无法拨打上面的电话,那我该如何将我的值传给C++代码?
SWIG由我的答案解决。其余的答案讨论替代方案。 – 2010-11-13 15:58:36
是的,非常感谢你安迪!你理解我的问题并给出一个非常合适的答案......我仍然在寻找更多答案。我对大多数人所做的事情特别感兴趣,因为这种情况一定会出现。大多数人使用Swig 2吗?大多数人是否会编写自己的类型图?这两个听起来对我来说都是极端的。 – Jason 2010-11-14 16:24:28
如果我必须手动将数组复制到C++中,那很好。如果我可以在C++中分配一个数组,并且必须使用特殊的方法来访问Java中的值,那很好。大多数人在这样的情况下做什么? – Jason 2010-11-14 16:31:59