Funktionen / Klassen ... von anderen Sprachen verwenden



  • Hallo,

    Ich habe mich bisher eigentlich nur mit C++ beschäftigt und frage mich jetzt langsam, ob und wie es möglich ist, aus einem C++-Programm heraus Funktionen anderer Sprachen zu benutzen (wenn ich den Quelltext oder eine Bibliothek habe). Weiterhin würde mich auch interessieren, ob man dann auch Klassen aus anderen Sprachen verwenden kann. (Was ja bei vielen Funktionen nötig ist, um die richtigen Argumente überhaupt übergeben zu können) Allerdings würde mich auch interessieren, ob und wie man auch aus anderen Sprachen C++ Funktionen aufrufen/benutzen kann (also praktisch vice versa).

    Geht das irgendwie oder sind die Sprachen zu verschieden??

    MfG

    Felix

    P.S: Ist das hier das richtige Forum?? (Ist ja ne Sprachenübergreifende Frage)



  • Bibliotheken (Libraries) eignen sich doch ganz gut dafür. Da statisches Linken meistens damit verknüpft ist, dass die verwendete Programmiersprache die Gleiche sein muss sind dynamische Bibliotheken wohl das richtige für deinen Zweck.

    Du erstellst in Programmiersprache A eine solche Bibliothek und bietest verschiedenste Funktionen an. Programmiersprache B lädt in ihrem Programm zur Laufzeit diese Library und ruft die Funktionen auf.

    Wie das genau von statten geht kommt natürlich auf die gewählten Programmiersprachen an und auch auf das gewählte Betriebssystem.

    Win-Stichwort: .dll
    Unix-Stichwort: .so

    MfG SideWinder



  • Da statisches Linken meistens damit verknüpft ist, dass die verwendete Programmiersprache die Gleiche sein muss sind dynamische Bibliotheken wohl das richtige für deinen Zweck.

    Quatsch. Das eine hat mit dem anderen doch nichts zu tun. Wichtig ist, dass du die ABI kompatibel hast. Ob du das nun dynamisch oder statisch linkst sollte dabei absolut egal sein.

    C++ mit anderen Sprachen zu kombinieren ist aber leider nicht ganz so leicht, da jeder Compiler seine eigene ABI hat. http://www.codesourcery.com/cxx-abi/ (Wenn du mit dem Begriff "ABI" nichts anfangen kannst: ABI ist die Binär Schnitstelle).

    Hilfreich ist hier aber sicher SWIG. Damit kannst du Sprachbindungen zu C- oder C++-Code für eine Menge anderer Sprachen, wie C#, Common Lisp, Java, Ruby, Perl uvm., erstellen.

    Ansonsten solltest du dir mal Dinge wie CORBA oder andere RPC Methoden angucken.


Log in to reply