1. Schreiben Sie eine Java-Testklasse

2. Verwenden Sie die Java-Testklasse, um eine C-Header-Datei zu generieren (Ich habe keine Grundkenntnisse in C oder C++. Ich bin mir nicht sicher, ob der später erscheinende Nicht-JAVA-Code C oder C++ ist. Daher bezeichne ich ihn im Tutorial als C.)

3. Verwenden Sie die C-Header-Datei, um C-Code zu schreiben

4. Generieren Sie die C-Bibliothek

5. Java-Aufruftest

Schritt 1: Schreiben Sie eine Java-Testklasse

Der Code lautet wie folgt:

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

}

Schritt 2: Verwenden Sie die Java-Klasse, um eine C-Header-Datei zu generieren

Der Generierungsbefehl lautet wie folgt:

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

Dieser Befehl muss im bin-Verzeichnis des Java-Testklassenprojekts ausgeführt werden.

Die folgende Abbildung zeigt die generierte Header-Datei.

Schritt 3: Verwenden Sie Visual Studio, um C-Code zu schreiben

1. Wählen Sie Datei -> Neu -> Projekt

2. Wählen Sie (Win32), geben Sie den Projektnamen und die Projektadresse ein und klicken Sie auf OK.

3. Klicken Sie direkt auf Weiter.

4. Wählen Sie hier DLL, Leeres Projekt und klicken Sie dann auf Fertig stellen.

5. Die Projektstruktur wird wie unten gezeigt generiert.

6. Klicken Sie mit der rechten Maustaste auf den Ordner Quelldateien und wählen Sie Hinzufügen -> Klasse.

7. Klicken Sie direkt auf Hinzufügen.

8. Geben Sie den Klassennamen ein, und klicken Sie auf Fertig stellen. (C++-Klasse)

9. Im include-Verzeichnis Ihres JDK-Verzeichnisses befindet sich eine Datei jni.h, im Unterverzeichnis win32 von include eine Datei jni_md.h und im bin-Verzeichnis des Java-Projekts die C-Header-Datei. Kopieren Sie sie gemeinsam in das TestJNI-Verzeichnis des C-Projekts: (Das aktuelle Projekt heißt TestJNI. Unter dem Projektverzeichnis befindet sich ein weiteres TestJNI-Verzeichnis. Projektverzeichnis -> TestJNI -> jni.h, com_aijiao_test_JNIDemo.h, jni_md.h) Wie unten gezeigt:

Das aktuelle Verzeichnis ist das Projektverzeichnis.

Die kopierten jni.h, com_aijiao_test_JNIDemo.h und jni_md.h

10. Klicken Sie mit der rechten Maustaste auf den Ordner Header Files des C-Projekts, wählen Sie Hinzufügen -> Vorhandenes Element

11. Wählen Sie jni.h, com_aijiao_test_JNIDemo.h und jni_md.h aus

12. Öffnen Sie die Datei com_aijiao_test_JNIDemo.h

13. Ändern Sie #include <jni.h> in #include "jni.h", und die Fehlermeldung verschwindet.

14. Schreiben Sie den folgenden Code in die Datei 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. Konfigurieren Sie das C-Projekt, klicken Sie mit der rechten Maustaste auf die Projektmappe, und wählen Sie Eigenschaften.

16. Nehmen Sie die folgende Konfiguration vor.

Schritt 4: Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Build aus. Die folgenden Informationen werden ausgegeben.

Nachfolgend sehen Sie die generierte DLL-Bibliothek.

Schritt 5: Nehmen Sie die folgenden Einstellungen im Java-Projekt vor.

Geben Sie den Pfad ein, in dem sich die DLL-Bibliothek befindet (der Dateiname muss nicht angegeben werden), und speichern Sie.

Führen Sie die Java-Klasse aus; das Ergebnis ist wie folgt.

Autor: aijiao

E-Mail: 2585838470@qq.com

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