我有一個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