Heim  >  Artikel  >  Java  >  Einführung in die einfache Verwendung von JNI in Java (Details)

Einführung in die einfache Verwendung von JNI in Java (Details)

不言
不言nach vorne
2018-10-10 11:53:104435Durchsuche

Dieser Artikel bietet Ihnen eine einfache Einführung in die Verwendung von JNI (ausführlich). Freunde in Not können darauf verweisen.

JNI ermöglicht es uns, die Funktionen lokaler Bibliotheken in Java-Code aufzurufen.

Das Folgende ist eine Aufzeichnung der einfachen Verwendung von JNI

1. Erstellen Sie die Java-Schnittstelle

public class JNIIterface {
    // 导入最终生成的dll文件
    static {
        System.loadLibrary("JNIDemo");
    }

    // 声明dll文件中实现的接口
    public native int MyMethod();
    
    public native int add(int x, int y);
}

2. Generieren Sie die C-Header-Datei, die der Schnittstelle entspricht

oben Die erstellte JNIIterface-Klasse, der Pfad der JNIIterface .class-Datei: JNIDemobinbaseJNIIterface .class

Führen Sie den Befehl im bin-Verzeichnis im Projektverzeichnis aus: javah -classpath . -jni base.JNIIterface

Dann wird die Datei base_JNIIterface.h im JNIDemobin-Verzeichnis generiert

3. Verwenden Sie Visual Studio, um die Implementierung der Schnittstelle zu schreiben.

Erstellen Sie ein C-Projekt Die Schritte sind wie folgt:

Schritt 1:

Zweiter Schritt:

Schritt drei:

Importieren Sie die erforderlichen Header-Dateien

Die im zweiten Schritt oben generierte Header-Datei sowie die Datei jni.h im Include-Verzeichnis im jdk-Stammverzeichnis und die Datei jni_md.h im Win32-Verzeichnis des

include Kopieren Sie es in das Header-Dateiverzeichnis im Projektverzeichnis

Erstellen Sie die Funktionsimplementierungsdatei

Klicken Sie mit der rechten Maustaste auf die Quelldatei im Projektverzeichnis und klicken Sie auf Hinzufügen -> Klasse

Und schreiben Sie den folgenden Code:

#include "base_JNIIterface.h"
#include "jni.h"
#include <stdio.h>

JNIEXPORT jint JNICALL Java_base_JNIIterface_MyMethod
  (JNIEnv *, jobject){
      printf("成功实现JNI测试DEMO");
      return 0;
}

JNIEXPORT jint JNICALL Java_base_JNIIterface_add
  (JNIEnv *, jobject, jint a, jint b){
      return a + b;
}

Generieren Sie die DLL Datei

Klicken Sie mit der rechten Maustaste auf „Lösung“ im Projektverzeichnis, wählen Sie Eigenschaften aus und stellen Sie dann wie unten gezeigt zusammen. Projekt

Dann, nach dem Kompilieren des Projekts, Es wird in eine DLL-Datei

5 im Release-Verzeichnis unter dem Projektverzeichnis konvertiert. Konfigurieren Sie die DLL-Datei im Java-Projekt

Platzieren Sie zuerst die dll-Datei im lib-Verzeichnis unter dem Stammverzeichnis des Java-Projekts

Führen Sie dann die folgenden Schritte aus, um die DLL-Datei als native Bibliothek zum Projekt hinzuzufügen

Bearbeiten Sie den oben gezeigten Speicherort der nativen Bibliothek und wählen Sie dann in der Popup-Oberfläche den Ordner aus, in dem sich die native Bibliothek befindet:

6. Schreiben Sie eine Testklasse in Überprüfen Sie, ob JNI erfolgreich angewendet wird. Öffentliche Klasse HelloJNI {

    public static void main(String[] args) {
        JNIIterface hw = new JNIIterface();
        int t = hw.add(3, 7);
        int s = hw.MyMethod();
        System.out.println(t);
        System.out.println(s);
    }
}

Die Testergebnisse nach der Ausführung lauten wie folgt:

0
0
成功??JNI??DEMO

Das Obige ist die grundlegendste Aufzeichnung der Verwendung von JNI.

Es bedarf noch eingehender Untersuchungen zur Verwendung der Funktionen geschriebener DLL-Dateien von Drittanbietern, wie z. B. System-DLL-Dateien.

Das obige ist der detaillierte Inhalt vonEinführung in die einfache Verwendung von JNI in Java (Details). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen