Debido a las necesidades del proyecto, recientemente he estudiado el método de Java Calling DLL. Cómo llamarlo está escrito aquí para una fácil referencia en el futuro:
El método adoptado es JNI: la interfaz nativa de Java, denominada JNI, es parte de la plataforma Java y puede usarse para interactuar con el código escrito en Java en otros idiomas.
A continuación se muestra un diagrama esquemático del trabajo de JNI extraído de Internet:
Descripción general: primero cree una clase en Java, genere. Clases a través de Javac y luego genere .h de Javah; Luego copie .h a VC e implementa funciones específicas por VC.
Después de compilar y pasar, genere DLL, coloque el DLL en el proyecto Java y úselo, y está terminado.
Hablemos de los pasos específicos (incluidos los ejemplos):
1. Construya una clase Java: Carga DLL, declare que el método DLL debe usarse y la implementación específica es responsable de DLL; El código es el siguiente:
clase pública java2cpp {static {system.loadLibrary ("javacallcpp");} public nation int dll_add (int a, int b); // agregar público nativo int dll_sub (int a, int b); // disminuir el público nativo int dll_mul (int a, int b); // múltiples públicos nativos int dll_div (int a, int b); // Divide público estático void main (string args []) {int sum = 0; java2cpp test = new java2cpp (); sum = test.dll_add (2, 4); system.out.println ("Java llame cpp dll resultado:" + sum);}}}2. Genere el archivo .h: CMD al directorio java2cpp.java y haga lo siguiente:
Paso 1: Javac java2cpp.java genera java2cpp.class
Paso 2: Javah Java2cpp genera el archivo de encabezado Java2cpp.h, con el siguiente contenido:
Nota: El contenido del archivo de encabezado Java2cpp.h no se puede modificar, de lo contrario se producirá un error.
3. Hacer una biblioteca dinámica de VC: cree un proyecto de biblioteca dinámica C/C ++, llamado Javacallcpp, importar Java2cpp.h e implementar su método:
#include "java2cpp.h" #include "dllapi.h" jniexport jint jnicall java_java2cpp_dll_1add (jnienv *env, trabajo obj, jint a, jint b) {int var = 0; var = dll_api_add (a, b); regresa var;} jniexport jniexport Java_java2cpp_dll_1sub (jnienv *env, trabajo obj, jint a, jint b) {int var = 0; var = dll_api_sub (a, b); return var;} jniexport jint jnicAn java_Java2cpp_dll_1mul (jnienv *env, trabajo obj, jint b) 0; var = dll_api_mul (a, b); return var;} jniexport jint jnicall java_java2cpp_dll_1div (jnienv *env, trabajo obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b); return var;} // termina está terminadoAgregue DLL_API_ADD (), reste dll_api_sub (), multiplique dll_api_mul () y divida dll_api_div ().
Implementado en el archivo, el nombre del archivo es dllapi.cpp, y la implementación es la siguiente:
int dll_api_add (int a, int b) {return (a+b);} int dll_api_sub (int a, int b) {return (ab);} int dll_api_mul (int a, int b) {return (a*b);} int dll_api_div (intEn este momento, el proyecto aún se compila, porque hay un error en incluir <jni.h>, debe agregar el directorio donde se encuentra el JNI, de la siguiente manera:
4. Compile el proyecto de la biblioteca dinámica: genere javacallcpp.dll y copie esta biblioteca dinámica en el directorio del proyecto Java:
5. Use DLL: ejecute el programa Java, el resultado es el siguiente:
En este punto, se ha completado el DLL Java Call.
Resumir
Lo anterior es el método de Java Dynamic Library - JNI implementado llamando a C/C ++ que el editor le presenta. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!