Der Link in der ersten Antwort beschreibt veraltete Methoden. Es ist viel einfacher geworden, Fortran von C oder C von Fortran zu nennen, wenn die ISO C-Bindung an Fortran hinzugefügt wird. Die Verwendung dieser Fortran-Sprachfunktion weist den Fortran-Compiler an, ausführbaren Code zu senden, der binärkompatibel mit C ist. Der Programmierer muss die Verbindung nicht "hacken", und da er Teil der Sprache ist, ist er kompiler- und plattformunabhängig. Technisch gesehen ist die ISO C-Bindung Teil von Fortran 2003, ist jedoch seit mehreren Jahren in zahlreichen Compilern verfügbar, z. B. gfortran seit Version 4.3 und Intel ifort.
Um eine Fortran-Subroutine oder -Funktion von C aufzurufen, deklarieren Sie die Fortran-Subroutine oder -Funktion mit der Option bind C und verwenden die C-kompatiblen Typen in der Bindung für die Deklarationen der Argumente. Es gibt Beispiele im gfortran Handbuch unter "Mixed Language Programming". Da die ISO C-Bindung ein Teil der Sprache ist, ist dieser Abschnitt des Handbuchs weitgehend unabhängig vom Compiler. Es gibt andere Beispiele in vorherigen Antworten hier auf Stack Overflow und anderswo im Web.
Hier ist ein schnelles Codefragment (ungetestetes) eine Fortran-Subroutine Deklaration einer Subroutine aus C genannt werden:
subroutine test (varint1, varflt2) bind (C, name="MyTest")
use iso_c_binding
integer (kind=c_int32_t), intent (in) :: varint1
real (kind=c_float), intent (out) :: varflt2
Der bind C name "MyTest" überschreibt den Fortran Namen - es Fall ist, empfindlich, anders als Fortran. Keine Sorge um Unterstriche! Die Variablentypen sollten offensichtlich sein ... siehe das gfortran Handbuch oder woanders für was verfügbar ist.
Eine genauere Antwort erfordert wahrscheinlich, dass Sie die spezifischen C- und Fortran-Compiler kennen, nach denen Sie fragen. – SingleNegationElimination
Bearbeitet. Sorry, dass ich das vergessen habe :) – nunolourenco
Kennen Sie [fwrap] (https://github.com/kwsmith/fwrap)? – ephemient