1. Escribir una clase de prueba de Java

2. Usar la clase de prueba de Java para generar el archivo de cabecera C (no tengo conocimientos de C y C++, no estoy seguro de si el código no Java que aparece más adelante es C o C++. Por eso, en el tutorial lo llamaré C).

3. Usar el archivo de cabecera C para escribir código C

4. Generar la biblioteca C

5. Prueba de llamada desde Java

Paso 1: Escribir la clase de prueba de Java

El código es el siguiente:

package com.aijiao.test;

public class JNIDemo {
    
    //定义一个方法,该方法在C中实现
    public native void testHello();
    
    public static void main(String[] args){
        //加载C文件
        System.loadLibrary("TestJNI");
        JNIDemo jniDemo = new JNIDemo();
        jniDemo.testHello();
    }

}

Paso 2: Usar la clase Java para generar el archivo de cabecera C

El comando de generación es el siguiente:

javah -classpath . -jni com.aijiao.test.JNIDemo

Este comando debe ejecutarse en el directorio bin del proyecto de la clase de prueba Java.

La siguiente imagen muestra el archivo de cabecera generado.

Paso 3: Escribir código C con Visual Studio

1. Seleccionar Archivo -> Nuevo -> Proyecto

2. Seleccionar (Win32), ingresar el nombre del proyecto, la dirección del proyecto y hacer clic en Aceptar.

3. Hacer clic directamente en Siguiente.

4. Aquí seleccionar DLL, proyecto vacío, y luego hacer clic en Finalizar.

5. Se genera la estructura de proyecto como la siguiente.

6. Hacer clic derecho en la carpeta de archivos de origen, seleccionar Agregar -> Clase.

7. Hacer clic directamente en Agregar.

8. Ingresar el nombre de la clase y hacer clic en Finalizar. (Clase C++)

9. En el directorio include de tu directorio JDK hay un archivo jni.h, en el directorio include/win32 hay un archivo jni_md.h, y también está el archivo de cabecera C en el directorio bin del proyecto Java. Cópialos juntos al directorio TestJNI del proyecto C: (el nombre del proyecto actual es TestJNI, y hay otro directorio TestJNI dentro del directorio del proyecto: directorio del proyecto -> TestJNI -> jni.h, com_aijiao_test_JNIDemo.h, jni_md.h) como se muestra a continuación:

El directorio actual es el directorio del proyecto.

Los archivos copiados: jni.h, com_aijiao_test_JNIDemo.h y jni_md.h.

10. Hacer clic derecho en la carpeta de archivos de cabecera del proyecto C, seleccionar Agregar -> Elemento existente.

11. Seleccionar jni.h, com_aijiao_test_JNIDemo.h y jni_md.h.

12. Abrir el archivo com_aijiao_test_JNIDemo.h.

13. Cambiar #include <jni.h> a #include "jni.h"; el mensaje de error desaparece.

14. Escribir el siguiente código en el archivo TestJNI.cpp:

Código:

#include "com_aijiao_test_JNIDemo.h"
#include <iostream>
#include <stdio.h>

JNIEXPORT void JNICALL Java_com_aijiao_test_JNIDemo_testHello
(JNIEnv *, jobject) {
    printf("this is C++ print");
}

15. Configurar el proyecto C: hacer clic derecho en la solución y seleccionar Propiedades.

16. Realizar la siguiente configuración.

Paso 4: Hacer clic derecho en el proyecto y seleccionar Generar; se muestra la siguiente información.

A continuación se muestra la biblioteca DLL generada.

Paso 5: Realizar la siguiente configuración en el proyecto Java.

Completar la ruta donde se encuentra la biblioteca DLL (no es necesario incluir el nombre del archivo) y guardar.

Ejecutar la clase Java; el resultado es el siguiente.

Autor: aijiao

Email: 2585838470@qq.com

URL: https://my.oschina.net/aijiaoer0624/blog/1142876