Recientemente, hice un proyecto para el reconocimiento facial en la página web y escribí un algoritmo de reconocimiento facial en C ++. Sin embargo, tengo que usar el backend de Java en la página web, que implica el problema de Java llamando a DLLS. El siguiente es un ejemplo simple de lo que el editor ha logrado buscando información relevante.
1. El primer paso es crear una nueva clase en Java
Como se muestra en la imagen de arriba, preste atención al sistema de oraciones.loadLibrary ("javacallcpp");, que es el código para cargar el archivo DLL. Luego necesitamos implementar el método de adición, resta, multiplicación y división definido a continuación en DLL.
2. Compile el archivo, el nombre del archivo es java2cpp.java , primero compítelo en el archivo de clase. Si usa Eclipse, el archivo se ha generado automáticamente, en la carpeta bin en el directorio del proyecto. Compile con la línea de comando, abra la ventana CMD, CD al directorio donde se encuentra el archivo .java y ejecute el comando javac java2cpp.java, es decir, generar java2cpp.class
Luego ejecute el comando javah java2cpp para generar el archivo de encabezado java2cpp.h, pero este paso a menudo falla. Otro método puede tener éxito. Ingrese el directorio del proyecto Eclipse, ingrese la carpeta bin, ejecute el comando javah -classpath. -jni Name.class Name (com.test.jni.java2cpp), y luego genere com_test_jni_java2cpp.h
3. Cree un nuevo proyecto Win32 en VS, NICELO: TESTJNI, el segundo paso es el siguiente:
4. Copie el archivo de encabezado generado en el segundo paso en la carpeta del proyecto y luego importárelo.
5. Implemente el método en el archivo de encabezado:
(1) Cree un nuevo archivo de encabezado dllapi.h, el código es el siguiente:
#include "com_test_jni_java2cpp.h" int dll_api_add (int a, int b); int dll_api_sub (int a, int b); int dll_api_mul (int a, int b); int dll_api_div (int a, int b);
(2) Cree un nuevo dllapi.cpp para implementar el método anterior, el código es el siguiente:
#include "stdafx.h" #include <iOStream> #include "dllApi.h" int dll_api_add (int a, int b) {return (a + b);} int dll_api_sub (int a, int b) {return (a - b);} int dll_api_mul (int a, int b) {return (return Dll_api_div (int a, int b) {return (a / b);} (3) Agregue código a testjni.cpp para implementar el método COM_TEST_JNI_JAVA2CPP.H. Después de agregar el código es el siguiente:
// testjni.cpp: define la función de exportación de la aplicación DLL. //#incluye "stdafx.h" #include "testjni.h" #include "com_test_jni_java2cpp.h" #include "dllapi.h" // Este es un ejemplo de exportación de variables testjni_api int ntestjni = 0; // Esto es un ejemplo de exportación de fondos de exportación. Testjni_api int fntestjni (void) {return 42;} // Este es el constructor de la clase exportada. // Para obtener información sobre las definiciones de clase, ver testjni.hctestjni :: ctestjni () {return;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1add (jnienv *env, trabajo obj, jint a, jint b) {int var = 0; var = dll_api_add (a, b); return var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1sub (jnienv *env, trabajo obj, jint a, jint b) {int var = 0; var = dll_api_sub (a, b); return var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1mul (jnienv *env, trabajo obj, jint a, jint b) {int var = 0; var = dll_api_mul (a, b); return var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1div (jnienv *env, trabajo obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b); devolver var;}(4) Genere DLL, y puede encontrar testjni.dll en la carpeta de depuración en la carpeta del proyecto. Sin embargo, debido a que requerimos que la DLL se llame Javacallcpp en Java, cambiamos el nombre del proyecto a Javacallcpp en este momento y luego regeneramos a Javacallcpp. [Este paso no generará, agregue la ruta de la siguiente manera]
6 métodos de llamadas
Copie el javacallcpp.dll generado en el paso 5 en la carpeta bin en la ruta de instalación JRE y ejecute el programa Java. Los resultados son los siguientes:
Lo anterior es la descripción completa de cómo Java llama a la biblioteca DLL C ++ que el editor le presentó. 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!