1. Écrire une classe de test Java

2. Utiliser la classe de test Java pour générer un fichier d'en-tête C (Je n'ai pas de bases en C ou en C++. Je ne suis pas sûr que le code non-Java apparaissant plus tard soit du C ou du C++. Par conséquent, dans le tutoriel, je l'appelle C.)

3. Utiliser le fichier d'en-tête C pour écrire du code C

4. Générer la bibliothèque C

5. Test d'appel Java

Étape 1 : Écrire une classe de test Java

Le code est le suivant :

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();
    }

}

Étape 2 : Utiliser la classe Java pour générer un fichier d'en-tête C

La commande de génération est la suivante :

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

Cette commande doit être exécutée dans le répertoire bin du projet de classe de test Java.

La figure suivante montre le fichier d'en-tête généré.

Étape 3 : Utiliser Visual Studio pour écrire du code C

1. Sélectionnez Fichier -> Nouveau -> Projet

2. Sélectionnez (Win32), entrez le nom du projet et l'adresse du projet, puis cliquez sur OK.

3. Cliquez directement sur Suivant.

4. Ici, sélectionnez DLL, Projet vide, puis cliquez sur Terminer.

5. La structure du projet est générée comme indiqué ci-dessous.

6. Cliquez avec le bouton droit sur le dossier Fichiers sources, choisissez Ajouter -> Classe.

7. Cliquez directement sur Ajouter.

8. Saisissez le nom de la classe et cliquez sur Terminer. (classe C++)

9. Il y a un fichier jni.h dans le répertoire include de votre répertoire JDK, un fichier jni_md.h dans le sous-répertoire win32 de include, et le fichier d'en-tête C dans le répertoire bin du projet Java. Copiez-les ensemble dans le répertoire TestJNI du projet C : (Le projet actuel est nommé TestJNI. Sous le répertoire du projet se trouve un autre répertoire TestJNI. Répertoire du projet -> TestJNI -> jni.h, com_aijiao_test_JNIDemo.h, jni_md.h) Comme montré ci-dessous :

Le répertoire actuel est le répertoire du projet.

Les fichiers jni.h, com_aijiao_test_JNIDemo.h et jni_md.h copiés

10. Cliquez avec le bouton droit sur le dossier Fichiers d'en-tête du projet C, choisissez Ajouter -> Élément existant

11. Sélectionnez jni.h, com_aijiao_test_JNIDemo.h et jni_md.h

12. Ouvrez le fichier com_aijiao_test_JNIDemo.h

13. Remplacez #include <jni.h> par #include "jni.h", et l'invite d'erreur disparaît.

14. Écrivez le code suivant dans le fichier TestJNI.cpp :

Code :

#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. Configurez le projet C, cliquez avec le bouton droit sur la Solution, puis sélectionnez Propriétés.

16. Effectuez la configuration suivante.

Étape 4 : Cliquez avec le bouton droit sur le projet et sélectionnez Build. Les informations suivantes sont affichées.

Ci-dessous se trouve la bibliothèque DLL générée.

Étape 5 : Effectuez les réglages suivants dans le projet Java.

Indiquez le chemin où se trouve la bibliothèque DLL (pas besoin d'inclure le nom du fichier), puis enregistrez.

Exécutez la classe Java, et le résultat est le suivant.

Auteur : aijiao

E-mail : 2585838470@qq.com

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