Ссылка в первом ответе описывает устаревшие методы. Стало намного проще звонить на Фортран из C или C из Фортрана с добавлением привязки ISO C к Фортрану. Использование этой функции языка Fortran дает указание компилятору Fortran выдавать исполняемый код, двоично совместимый с C. Программисту не нужно «взламывать» соединение, и поскольку оно является частью языка, зависит ли оно от компилятора и платформы. Технически ISO C Binding является частью Fortran 2003, но он был доступен в течение нескольких лет во многих компиляторах, например, gfortran начиная с версии 4.3 и Intel ifort.
Чтобы вызвать подпрограмму или функцию Fortran из C, вы объявляете подпрограмму или функцию Fortran с опцией bind C и используете C-совместимые типы, предоставляемые в привязке для объявлений аргументов. Есть примеры в руководстве по gfortran в разделе «Программирование на разных языках». Поскольку привязка ISO C является частью языка, этот раздел руководства в значительной степени не зависит от компилятора. В предыдущих ответах есть и другие примеры здесь, о переполнении стека и в других местах в Интернете.
Вот фрагмент быстрого кода (непроверенный) объявления подпрограммы Фортрана подпрограммы, вызываемой из 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
Имя привязки C «MyTest» переопределяет имя Fortran - оно чувствительно к регистру, в отличие от Fortran. Не нужно беспокоиться о подчеркиваниях! Типы переменных должны быть очевидны ... см. Руководство gfortran или где-либо еще.