Mit C++ library in java
Ich bin neu in diesem forum, also bitte entschuldigen Sie mich, wenn ich nicht meine Frage in einem richtigen Weg.
Möchte ich helfen, eine C++(.lib and.h)
Dateien in java
.
Ich will die Methoden der .lib
- Datei in mein java-code .
Prototyp der Funktion ist wie :
FunctionXYZ(BYTE *Data1, BYTE *Data2, BYTE *Data3, int Data4);
Umgebung, wäre ich mit ist centOS.
Danke im Voraus
P. S: ich habe keinen source code für diese .lib
- Haben Sie nachgeforscht?
- ja, das habe ich aber nicht finden die passende Lösung
- ich bekomme viel mit .dll in java aber nicht mit .lib
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur Verwendung von Funktionen aus einer
.lib
, die Sie haben, um JNI-wrapper-Funktionen für diese Bibliothek Funktionen,, und dann verknüpfen Sie zusammen mit Ihrer Bibliothek in ein.dll
.Beispiel:
Vorausgesetzt, Sie haben eine Funktion in der C++ - Standardbibliothek Header mit dieser Signatur:
Erstellen Sie eine wrapper-Funktion in C++:
Link die Bibliothek und das Deckblatt in eine DLL
Erstellen Sie eine Java-Klasse mit der nativen Methode:
Laden Sie die DLL mithilfe der
System.loadLibrary
- Funktion (oder ähnlich)example
Methode auf einem ObjektMyClass
lib
als lib ist nur ein Objekt mit der Funktion Implementierungen. Wenn die Verknüpfung mit der Bibliothek sieht der linker diese Implementierungen und links, die Sie zu Ihnen, wo Sie diese in Ihren code ein. Finden Sie unter compiler/linker 101 und meine aktualisierte Antwort.jint
, aber kann man NICHT dereferenzieren es in Java (das bedeutet, es macht keinen Sinn, Sie sollten nur Werte übergeben).können Sie verwenden JNI-Technologie, die ermöglicht Sie, um die Interoperabilität mit nativem code
finden Sie hier
http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html
Mittels JNI ist wahrscheinlich der beste Weg zu gehen. Hier ist ein Wikipedia-link, wenn Sie möchten, um zu Lesen: http://en.wikipedia.org/wiki/Java_Native_Interface
Und hier ist die Dokumentation für Sie: http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html