C++ mit Fortran verbinden: Wrapper?



  • Hallo,

    ich habe einen von mir geschriebenen C++ Code. Diesen code möchten nun leute aus fortran heraus aufrufen können. Ich habe so etwas noch nie gemacht aber ich glaube ich müsste dazu einen wrapper schreiben!?

    Ich möchte aber auch gleich für mehrere Sprachen wrapper machen.
    Wie funktioniert das bzw. was muss ich tun? Hat jemand ein gutes Minimalbeispiel parat?

    Könnt ihr mir weiterhelfen?

    Danke vielmasl


  • Mod

    Google?

    Hier ich hab's mal für dich gemacht:
    http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html



  • ja danke...ich suche schon die ganze zeit nur weiß ich absolut nicht wie ich anfangen soll...mir sind auch die beispiele nicht ganz klar. angenommen ich habe folgenden code:

    #include <iostream>
    int main(int argc, int** argv)
    {
         std::cout << "Hall Welt" << std::endl;
    }
    

    wie kann ich jetzt bewerkstelligen dass wenn jemand fortran code hat also eine datei *.f. dass er dieses programm laufen lassen kann?


  • Mod

    WrapIt schrieb:

    ja danke...ich suche schon die ganze zeit nur weiß ich absolut nicht wie ich anfangen soll...mir sind auch die beispiele nicht ganz klar. angenommen ich habe folgenden code:

    #include <iostream>
    int main(int argc, int** argv)
    {
         std::cout << "Hall Welt" << std::endl;
    }
    

    wie kann ich jetzt bewerkstelligen dass wenn jemand fortran code hat also eine datei *.f. dass er dieses programm laufen lassen kann?

    Ach, du hast ein fertiges Programm? Ich dachte du hättest Funktionsbibliotheken die in verschiedenen Sprachen geschrieben worden wären. So ist das doch total simpel: Du guckst einfach wie man in Fortran externe Programme ausführt (also das was system in C macht) und rufst dein anderes Programm auf. In welcher Sprache das ursprünglich geschrieben wurde ist dabei genauso unerheblich wie bei der Benutzung von system.



  • danke schonmal.

    Also nich ich will mein c++ programm aus fotran aufrufen lassen können sondern andere. Ich muss aber dazu doch irgendwie meine main() umbauen oder irgendwas machen oder?
    Wäre es richtig statt der main mit den shell-argumenten einen namen inklusive signatur für das programm zu geben?

    also wenn ich mein programm so aufgerufen habe: ./myprogramm -ns 5
    wobei ns ein parameter darstellt wäre es dann richtig eine c++ methode zu schreiben die sozusagen main-entry wird aber wo die signatur eben so aussieht?

    int myprogram(int ns)
    {
    
    }
    

    und myprogram wird dann aus fortran aufgerufen? Oder bin ich jetzt ganz durcheinander? 😕



  • wrapIt schrieb:

    also wenn ich mein programm so aufgerufen habe: ./myprogramm -ns 5

    int main(int argc, int** argv)
    

    Du kennst die Parameter argc und argv, und dessen Bedeutung? Die Argumente parsen musst du aber selber...



  • ja ich kenne deren bedeutung.

    allerdings verstehe ich nicht was du mit parsen meinst....


  • Mod

    WrapIt schrieb:

    allerdings verstehe ich nicht was du mit parsen meinst....

    Und was macht man, wenn man ein Fachwort nicht versteht?

    Allerdings glaube ich nicht, dass dir dies bei deinem Problem hilft. Ich weiß zwar nicht mehr was überhaupt dein Problem ist (du hast es geschafft mich vollständig zu verwirren), aber ich glaube nicht, dass du einen Parser suchst.



  • mir ist schon klar dass parsen = übersetzen heißt. Nur verstehe ich den zusammenhang mit meinem problem nicht.
    ich vermute ja dass asc meint ich muss sozusagen die parameter dann mittels argc und argv setzen - kann also die signatur von main komplett beibehalten. ich verstehe aber bis jetzt nicht was genau ein wrapper ist bzw. was er macht - ein beispiel mit guter erklärung finde ich ebenso wenig.

    Was ich zusätzlich nicht verstehe ist, dass wenn man Hilfe in einem Forum braucht man immer nur auf google etc. hingewiesen wird OBWOHL man ausdrücklich schreibt es bereits versucht zu haben. Natürlich erfordert es eigeninitiative doch bevor jedem irgendwas schreibt und sich ärgert das in dem fall ich wieder zu wenig weiß (was ich selbst auch zugebe) sollte er lieber gar nix schreiben!


  • Mod

    wrapIt schrieb:

    Was ich zusätzlich nicht verstehe ist, dass wenn man Hilfe in einem Forum braucht man immer nur auf google etc. hingewiesen wird OBWOHL man ausdrücklich schreibt es bereits versucht zu haben. Natürlich erfordert es eigeninitiative doch bevor jedem irgendwas schreibt und sich ärgert das in dem fall ich wieder zu wenig weiß (was ich selbst auch zugebe) sollte er lieber gar nix schreiben!

    Und ich hatte mit den paar Brocken Fortran die ich spreche gerade ein schönes Beispiel ausgearbeitet, das ich dir geben wollte, aber ich glaube ich schreibe lieber nichts. War aber eine gute Übung für mich selbst, mal die Sprachen in der Praxis zu mischen.



  • seh ich auch so und damit relativiert sich die sinnhaftigkeit dieses forums.


Log in to reply