Cómo incrustar programas JAVA en C++
1. La biblioteca de clases estándar de Java no proporciona las funciones requeridas por la aplicación, pero estas funciones suelen estar relacionadas con la plataforma.
2. Espero utilizar algunas bibliotecas de clases o aplicaciones existentes, no escritas en lenguaje Java.
3. Algunas partes del programa tienen requisitos de velocidad relativamente altos, por lo que elegimos implementarlas en lenguaje ensamblador o C y llamarlas en lenguaje java.
(1) Al escribir el programa HelloWorld, debido a que implica escribir generación c/c++*, se utilizarán herramientas Microsoft VC++ durante el desarrollo. Para escribir una generación Java * y crear un directorio de saludo en el disco duro como directorio de trabajo, primero debe escribir su propia generación Java *. El método nativo se declarará en la generación Java *, lo cual es muy simple. Como se muestra a continuación
La declaración del método displayHelloWorld() tiene una palabra clave nativa, lo que indica que este método está implementado en un lenguaje distinto de Java. El método no incluye implementación ya que se implementará en lenguaje C/C++. Tenga en cuenta que la generación * de System.loadLibrary ("hello") se define en el bloque de inicialización estática. El sistema se usa para cargar la biblioteca hello***, que es el hello.so generado más adelante (si se usa como sistema, puede ser hola.así formulario).
(2) Generación de Java compilada*
HelloWorld.class genera el archivo HelloWorld.class.
(3)Crea uno. h archivo
En este paso, se utiliza el comando javah para generar. h, este archivo se utilizará y ejecutará en futuras generaciones de c/c++*.
javah HelloWorld De esta manera, puede ver que se genera un archivo HelloWorld.h en el mismo directorio.
(4) Escribir generación de implementación local*
En esta parte, debe usar el lenguaje C/C++ para implementar el método definido en Java, usar VC++ para crear un nuevo proyecto. y luego cree un archivo HelloWorldImp.cpp, el contenido es el siguiente.
Esto contiene los archivos Jni.h y HelloWorld.h recién obtenidos. Por lo tanto, debe configurarse en VC++, jni.h está en JAVA_HOME/include. Después de la compilación, se generará el archivo Hello.dll.
(5) Ejecute el programa java
Copie el archivo hello.dll generado anteriormente en el directorio de trabajo. En este momento, el directorio incluye los archivos HelloWorld.class, HelloWorld.class y hello.dll. Ejecute el comando java HelloWorld y podrá ver el resultado de Hello world|
Prueba de jni en Linux
1. Cree los directorios src y lib bajo el usuario de prueba.
2. Ingrese al directorio src y escriba HelloWorld.java.
3. Luego Javac·HelloWorld.java
4. Utilice la herramienta javah para generar el archivo HelloWorld.h.
javah HelloWorld
5. Escribe HelloWorld.c
#Contiene? ;
#Contiene "HelloWorld.h"
#Contiene? ;
JNIEXPORT void JNICALL
Java _ hola mundo _ display hola mundo(JNIEnv * env, jobject obj)
{ printf("¡Hola mundo!/n ");
Regresar;
}?
6. Compile la biblioteca dinámica c.
gcc-shared-o$HOME/lib/lib hola. Hola mundo c
Tenga en cuenta que el directorio $HOME/lib debe agregarse a la variable de entorno LD_LIBRARY_PATH.
7. Programa en ejecución HelloWorld