Aufrufen von C ++ - Code von Java (GCJ)
-
24-10-2019 - |
Frage
Ich versuche, C ++ von Java mit GCJ mit dem CNI aufzurufen. Bisher kann ich Java -Code von C ++ aufrufen. Wie kann ich mit dem CNI C ++ von Java aufrufen?
Lösung
Ich werde etwas auf Pcents Antwort ausdehnen, um das zu lesen GCJ/CNI -Dokumente.
Ich glaube, dass der Schlüssel darin besteht, das gesamte Konzept "CNI C ++ Klasse" zu verstehen.
- Die Schaffung einer CNI C ++ - Klasse wird in erklärt diese Seite.
- Sie können Java -Code von einer CNI C ++ - Klasse anrufen (vorausgesetzt, Sie haben Header -Dateien generiert) - das ist es, was Sie bereits tun (Java von C ++ aufrufen).
- Der entscheidende Punkt ist das CNI C ++ - Methoden können von Java aufgerufen werden (Weil diese Klassen eine Reihe von Einschränkungen haben, um sie zu Java-kompatibel zu machen). Und weil die CNI -Klasse nur eine (bestimmte) C ++ - Klasse ist, können Sie sie auch mit anderen Bibliotheken verknüpfen, wie Sie jede C ++ - Klasse verknüpfen würden.
Die meisten von den Dokumentation beschreibt, wie sich die Java -Konventionen in einer CNI C ++ - Klasse übersetzen.
Andere Tipps
Versuchen Sie es zu lesen GCJ/CNI -Dokumente
Ich bin kein guter Java-Programm, aber ich bin mit C#/C ++ Interop vertraut. Die beste Lösung für mich, von natives C ++ bis verwaltet C# zu verwenden, war die Verwendung Rückrufe. Ich denke, das gilt auch für Jni
Versuchen Sie es zu lesen: http://www.tidytutorials.com/2009/07/java-native-interface-jni-example-using.html