Tengo un método en C++ que tiene una matriz de dobles como argumento. Estoy llamando a este método desde Java y necesito pasar una serie de dobles. La rutina C++ lee y modifica los valores de la matriz y necesito esos valores actualizados en Java. ¿Cómo hago esto?¿Cómo paso las matrices de Java a C++ usando Swig?
Por ejemplo, tomar la C++ rutina:
void myMethod(double *values, int size) {
for (int i=0; i < size; i++) {
values[i] = 2*values[i];
}
}
Y el código de Java:
double[] values = { 1.3, 1.1 };
myMethod(values,values.length);
System.out.println(values[0]); // prints 2.6
supongo que una llamada a myMethod no se puede hacer como la llamada anterior ... o puede ? Y lo que es necesario en Swig para que esto funcione. Si no puedo hacer una llamada como la de arriba, ¿cómo obtengo mis valores para el código de C++?
SWIG es respondida por mi respuesta. El resto de las respuestas discuten alternativas. –
Sí, muchas gracias Andy! Comprende mi pregunta y me dio una respuesta muy adecuada ... Todavía estoy buscando más respuestas. Estoy particularmente interesado en lo que hace la mayoría de las personas, ya que esta situación debe aparecer todo el tiempo. ¿La mayoría de la gente usa Swig 2? ¿La mayoría de las personas escribe sus propios mapas de tipos? Ambos me parecen extremos. – Jason
Si tengo que copiar la matriz en C++ manualmente, está bien. Si puedo asignar una matriz en C++ y tengo que usar métodos especiales para acceder a los valores en Java, está bien. ¿Qué hace la mayoría de las personas en casos como este? – Jason