【发布时间】:2010-11-12 17:12:44
【问题描述】:
我在 C++ 中有一个将双精度数组作为参数的方法。我从 Java 调用这个方法,需要传递一个双精度数组。 C++ 例程读取和修改数组的值,我需要 Java 中的这些更新值。我该怎么做?
以 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 2 吗?大多数人都编写自己的类型图吗?对我来说,这两个听起来都很极端。
-
如果我必须手动将数组复制到 C++ 中,那很好。如果我可以在 C++ 中分配一个数组并且必须使用特殊方法来访问 Java 中的值,那很好。大多数人在这种情况下会怎么做?
-
上述方法需要在数组的每个项目上设置 setItem (index, value)。我无法想象没有更好的方法,尽管经过数小时的搜索我找不到它。有什么线索吗?