Actualmente estoy escribiendo un contenedor JNI para una clase de C++ y no estoy seguro de si lo que he hecho hasta ahora es la forma más correcta.C++ Java wrapper construction con JNI
lo que tengo entendido, no es posible declarar un constructor de Java native
, por lo que terminó de escribir algo como:
package log;
public class Logger
{
private long internalPtr = 0;
private native long createNativeInstance(String application, String module, String function);
public Logger(String application, String module, String function)
{
this.internalPtr = createNativeInstance(application, module, function);
}
public native String getApplication();
static { System.loadLibrary("log_java"); }
}
Básicamente, mi campo internalPtr
mantiene el puntero a mi subyacente C++ instancia y yo créelo en un constructor de Java puro, utilizando el método static native
createNativeInstance()
.
¿Es esta la manera correcta de hacer las cosas?
Otra pregunta que podría obtener una respuesta es: "¿Cómo debo manejar la desasignación?"
Mis habilidades de Java son extremadamente limitadas, así que no dude en sugerir incluso las soluciones más "obvias".
Muchas gracias.
Comprobar JNA, podría ser más fácil para empezar. – lexicore