Ho un metodo in C++ che accetta una serie di doppi come argomento. Sto chiamando questo metodo da Java e ho bisogno di passare una serie di doppi. La routine C++ legge e modifica i valori dell'array e ho bisogno di quei valori aggiornati in Java. Come faccio a fare questo?Come faccio a passare gli array da Java a C++ usando Swig?
Per esempio, prendete il C++ di routine:
void myMethod(double *values, int size) {
for (int i=0; i < size; i++) {
values[i] = 2*values[i];
}
}
E il codice Java:
double[] values = { 1.3, 1.1 };
myMethod(values,values.length);
System.out.println(values[0]); // prints 2.6
Credo che una chiamata a myMethod non può essere fatto come la chiamata di cui sopra ... o può ? E ciò che è necessario in Swig per farlo funzionare. Se non riesco a effettuare una chiamata come quella sopra, come posso ottenere i miei valori sul codice C++?
La risposta è SWIG. Il resto delle risposte discute le alternative. –
Sì, grazie mille Andy! Capisci la mia domanda e hai dato una risposta molto appropriata ... Sono ancora alla ricerca di ulteriori risposte. Sono particolarmente interessato a ciò che fa la maggior parte delle persone, poiché questa situazione deve emergere in ogni momento. La maggior parte delle persone usa Swig 2? La maggior parte delle persone scrive i propri typemaps? Entrambi mi sembrano estremi. – Jason
Se devo copiare manualmente la matrice in C++ va bene. Se posso allocare un array in C++ e devo usare metodi speciali per accedere ai valori in Java, va bene. Cosa fa la maggior parte della gente in casi come questo? – Jason