Le lien dans la première réponse décrit des méthodes obsolètes. Il est devenu beaucoup plus facile d'appeler Fortran de C, ou C de Fortran avec l'ajout de la liaison ISO C à Fortran. L'utilisation de cette fonction de langage Fortran demande au compilateur Fortran d'émettre du code exécutable binaire compatible avec C. Le programmeur n'a pas besoin de "pirater" la connexion et comme il fait partie du langage, il est indépendant du compilateur et de la plate-forme. Techniquement, l'ISO C Binding fait partie de Fortran 2003 mais il est disponible depuis plusieurs années dans de nombreux compilateurs, par exemple, gfortran depuis la version 4.3 et Intel ifort.
Pour appeler une sous-routine ou une fonction Fortran à partir de C, vous déclarez la sous-routine ou la fonction Fortran avec l'option bind C et utilisez les types compatibles C dans la liaison pour les déclarations des arguments. Il y a des exemples dans le manuel de gfortran sous "Programmation en langage mixte". Puisque la liaison ISO C fait partie du langage, cette section du manuel est largement indépendante du compilateur. Il y a d'autres exemples dans les réponses précédentes sur Stack Overflow et ailleurs sur le web.
Voici un fragment de code rapide (non testé) d'une déclaration de sous-programme Fortran d'un sous-programme à appeler de C:
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
Le nom de liaison C « MyTest » remplace le nom Fortran - il est le cas sensible, contrairement à Fortran. Pas besoin de s'inquiéter des underscores! Les types de variables doivent être évidents ... voir le manuel de gfortran ou ailleurs pour savoir ce qui est disponible.
Une réponse plus précise nécessite probablement de connaître les compilateurs C et Fortran spécifiques dont vous avez besoin. – SingleNegationElimination
Édité. Désolé j'ai oublié que :) – nunolourenco
Connaissez-vous [fwrap] (https://github.com/kwmsmith/fwrap)? – ephemient