Vor kurzem habe ich ein Projekt zur Gesichtserkennung auf der Webseite durchgeführt und einen Gesichtserkennungsalgorithmus in C ++ geschrieben. Ich muss jedoch das Java -Backend auf der Webseite verwenden, das das Problem von Java Calling DLLS betrifft. Das Folgende ist ein einfaches Beispiel dafür, was der Editor erreicht hat, indem relevante Informationen nachgeschlagen werden.
1. Der erste Schritt besteht darin, eine neue Klasse in Java zu erstellen
Wie im obigen Bild gezeigt, achten Sie auf das Satzsystem.loadlibrary ("javacallcpp"); Anschließend müssen wir die nachstehend in DLL definierte Additions-, Subtraktions-, Multiplikations- und Division -Methode implementieren.
2. Kompilieren Sie die Datei, der Dateiname ist java2cpp.java und kompilieren Sie sie zuerst in die Klassendatei. Wenn Sie Eclipse verwenden, wurde die Datei automatisch im Binordner im Projektverzeichnis generiert. Vergleichen
Führen Sie dann den Befehl javah java2cpp aus, um die Header -Datei java2cpp.h zu generieren, aber dieser Schritt schlägt häufig fehl. Eine andere Methode kann Erfolg haben. Geben Sie das Verzeichnis des Eclipse -Projekts ein, geben Sie den Bin -Ordner ein und führen Sie den Befehl Javah -ClassPath aus. -Jni Paketname.Class Name (com.test.jni.java2cpp) und generieren Sie dann com_test_jni_java2cpp.h
3. Erstellen Sie ein neues Projekt Win32 in vs, nennen Sie es: testjni, der zweite Schritt lautet wie folgt:
4. Kopieren Sie die im zweite Schritt generierte Header -Datei in den Projektordner und importieren Sie sie.
5. Implementieren Sie die Methode in der Header -Datei:
(1) Erstellen Sie eine neue Header -Datei dlllapi.h, der Code ist wie folgt:
#include "com_test_jni_java2cpp.h" int dll_api_add (int a, int b); int dll_api_sub (int a, int b); int dll_api_mul (int a, int b); int dll_api_div (int a, int b);
(2) Erstellen Sie eine neue dlllapi.cpp, um die obige Methode zu implementieren. Der Code lautet wie folgt:
#include "stdafx.h" #include <ioStream> #include "dllapi.h" int dll_api_add (int a, int b) {return (a + b);} int dll_api_sub (int a, int b) {return (a - b); Dll_api_div (int a, int b) {return (a / b);} (3) Fügen Sie Testjni.cpp Code hinzu, um die Methode com_test_jni_java2cpp.h zu implementieren. Nach dem Hinzufügen des Codes lautet wie folgt:
// testjni.cpp: Definiert die Exportfunktion der DLL -Anwendung. //#inklusive "stdafx.h" #include "testjni.h" #include "com_test_jni_java2cpp.h" #include "dllapi.h" // Dies ist ein Beispiel für die Exportvariablen testjni_api intestjni = 0; // Dies ist ein Beispiel für das Exportieren von exportierenden Funktionen. Testjni_api int fntestjni (void) {return 42;} // Dies ist der Konstruktor der exportierten Klasse. // Informationen zu Klassendefinitionen finden Sie unter testjni.hctestjni :: ctestjni () {return;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1add (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_add (a, b); return var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1sub (jnienv *env, Job obj, jint a, jint b) {int var = 0; var = dll_api_sub (a, b); return var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1mul (jnienv *env, Job obj, jint a, jint b) {int var = 0; var = dll_api_mul (a, b); return var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1div (jnienv *env, Job obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b); return var;}(4) Generieren Sie DLL und Sie finden Testjni.dll im Debug -Ordner im Projektordner. Da die DLL jedoch in Java als Javacallcpp bezeichnet werden muss, benennen wir das Projekt zu diesem Zeitpunkt in Javacallcpp um und regenerieren dann Javacallcpp. [Dieser Schritt wird nicht erzeugen, fügen Sie den Pfad wie folgt hinzu]
6 Aufrufmethoden
Kopieren Sie die in Schritt 5 generierte Javacallcpp.dll in den Bin -Ordner unter dem JRE -Installationspfad und führen Sie das Java -Programm aus. Die Ergebnisse sind wie folgt:
Das obige ist die vollständige Beschreibung, wie Java die C ++ - DLL -Bibliothek nennt, die der Editor Ihnen vorgestellt hat. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!