Wie Sie auf die Java-Methode in einer C ++ - Anwendung zugreifen
Nur eine einfache Frage:
Ist es möglich den Aufruf einer java-Funktion, die von c/c++ ?
InformationsquelleAutor der Frage Hemant | 2009-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie können, aber es ist ein wenig wirr, und funktioniert in einer reflektierenden/nicht typsicher Weise (das Beispiel verwendet die C++ - api, das ist ein wenig sauberer als die C-version). In diesem Fall wird eine Instanz der Java-VM innerhalb des C-Codes. Wenn Ihre Muttersprache genannt wird zuerst aufgerufen wird, von Java, dann gibt es keine Notwendigkeit zu konstruieren, die eine VM-Instanz
Kompilieren (auf Ubuntu):
Hinweis: der return-code von jeder dieser Methoden sollten überprüft werden, um zu implementieren, die korrekte Fehlerbehandlung (ich habe Sie ignoriert, das für die Bequemlichkeit). E. g.
InformationsquelleAutor der Antwort Michael Barker
Ja, es ist, aber Sie haben, es zu tun via JNI: http://java.sun.com/javase/6/docs/technotes/guides/jni/index.html
InformationsquelleAutor der Antwort CB Bailey
Gibt es viele Möglichkeiten. Hier sind einige Ideen. Neben, kommerziellen Java-COM-Brücken erlauben die COM-Kommunikation von c++ nach java (wenn Sie Windows verwenden). Sie sollten auch einen Blick auf CNI.
InformationsquelleAutor der Antwort Yishai
Werfen Sie einen Blick auf die Aufruf-API. Dies ermöglicht Ihnen das laden und starten einer JVM aus innerhalb deine native-Anwendung, und klicken Sie dann zum aufrufen von Methoden auf, die es aus der Anwendung.
Kurz (aus dem verlinkten doc)
InformationsquelleAutor der Antwort Brian Agnew
Ja, können Sie einen Java-Funktion aus C++ oder C, aber es sei denn, Sie sind mit so etwas wie COM oder CORBA (oder eine andere 3rd-party-tool, dass ich wahrscheinlich nicht bewusst) Sie haben zu tun, das im Zusammenhang mit JNI.
Die ganze Prozedur zum Aufruf einer Java-Methode aus native code ist in Kapitel 4 beschrieben, die in Abschnitt 4.2 genannten "Aufruf von Methoden" in Sun JNI guide pdf, die Sie hier finden können hier.
InformationsquelleAutor der Antwort Timo Geusch
Der folgenden Funktion können Sie die VM erstellen.
Kompilieren Sie die berühmten Hallo Welt Programm. Der folgenden Funktion wird versucht, rufen Sie die main-Methode der HelloWorld-Programm.
Nun setzen create_vm Funktion und die main-Funktion in eine cpp-Datei, include-jni.h und kompilieren Sie es. Ich verwendet MinGW auf windows.
Exection
Nun, wenn Sie führen Sie die erstellte exe-Datei, erhalten Sie eine Fehlermeldung. jvm.dll nicht gefunden .
Setzen
C:\Program Files\Java\jre6\bin\client
in Ihrer PATH-Umgebungsvariablen. Jetzt können Sieausführen der exe-Datei.
Hinweis: nicht verdrängen, die jvm.dll Datei.
InformationsquelleAutor der Antwort Sorter
Nach coding-Beispiel oben, müssen Sie einige Konfigurationseinstellungen über Ihr Projekt.
Schritte zur Verknüpfung der jvm.lib zu Ihrem Projekt in Visual Studio:
Linker->allgemein->AdditionalLibraryDirectories
Nachdem diese Schritte, Ihr Projekt link zu jvm und gut arbeiten.
InformationsquelleAutor der Antwort Mustafa Kemal