2016-08-11 3 views
2

Ich habe gerade das Open-Source-Projekt in github (googlevr) gesehen und meine Frage ist, wie ist es möglich, dass C++ mit Java funktioniert? Ich kann verstehen, dass Java für Android-Sachen und C++ für Grafik, Speicher und Tracking ist, aber wie arbeiten zwei verschiedene kompilierte Sprachen zusammen?Google VR Java und C++?

+1

[JNI] (https://en.wikipedia.org/wiki/Java_Native_Interface), zum Beispiel. – emlai

+0

Lesen Sie auf SWIG. – JETM

+0

JNA, JNR, Projekt Panama. Kürzlich habe ich auch eine Rede über das Hinzufügen von Handles für Maschinencode-Snippets gesehen, die vom Jit verwendet werden sollen. –

Antwort

3

In C und C++ können Sie gemeinsam genutzte Bibliotheken erstellen. Sie werden für jede Plattform ein wenig anders gehandhabt, machen aber ungefähr dasselbe.

  • erstellt Windows eine DLL
  • Mac ein .dylib
  • Linux schafft eine .so

Diese stellen ausführbaren Code erstellt, die von jedem Prozess aufgerufen werden kann. Dies bedeutet, dass Java-Code, Matlab-Code, Python-Code usw. in C/C++ geschriebenen Code aufrufen können. Java verwendet hierfür eine Funktion namens JNI (Java Native Interface). JNI ist notorisch schwierig einzurichten und zu verwalten, daher verwenden viele Leute eine Bibliothek wie Swig, die im Wesentlichen alles verwaltet, was Sie in Bezug auf JNI benötigen, um den Aufruf von vorkompiliertem C++ - Code aus Java zu vereinfachen.

Der Schlüssel hier ist "vorkompiliert". Irgendjemand, irgendwann, vielleicht sogar Sie selbst, musste den Quellcode nehmen und ihn in eine dll, dylib oder so kompilieren, und Sie müssen diese gemeinsame Bibliothek dort einrichten, wo der Code, der sie benutzen muss (in diesem Fall Ihre Java App) kann es sehen, so dass, wenn die Java-App gestartet wird, kann es die gemeinsame Bibliothek laden und Anrufe in sie machen.

Für Java ist eine Überlegung, dass Java-Code inhärent plattformübergreifend ist. C++ - Code muss für jede Plattform kompiliert werden. Wenn Sie also Ihre Java-App verteilen, müssen Sie sicherstellen, dass Sie eine gemeinsam genutzte Bibliothek zur Verfügung haben, die für die Plattform zugänglich ist, auf der sie ausgeführt wird.

Verwandte Themen