Вызвать Fortran из C легко, C из Fortran потенциально сложно, C ++ из Fortran потенциально может стать ... сложным.
У меня есть несколько заметок в другом месте . Они довольно старые, но ничего не меняется очень быстро в этой области, поэтому там могут быть некоторые полезные указатели.
К сожалению, стандартного способа сделать это не существует, и разные компиляторы могут делать это немного по-разному. Сказав это, только при передаче строк вы можете столкнуться с серьезными головными болями. Приведенный выше ресурс указывает на библиотеку под названием CNF , которая призвана помочь здесь, в основном, предоставляя макросы C для подсчета бухгалтерии.
Короткая версия, однако, такова:
- Плавающие и целые числа, как правило, просты - целое число - это целое число, более или менее.
- Строки жесткие (потому что Fortrans довольно часто хранит их как структуры, и очень редко как массивы с нулевым символом в стиле C).
- C - это вызов по значению, Fortran call-by-reference, что означает, что функции Fortran всегда являются указателями на значение, с точки зрения C.
- Вам нужно позаботиться о том, как ваш компилятор генерирует символы: компиляторы часто превращают символ C / Fortran
foo
в _foo
или foo_
или в какой-либо другой вариант (см. Документацию по компилятору).
- C имеет тенденцию не иметь большой части времени выполнения, как C ++ и Fortran, и поэтому вы должны помнить, чтобы связать это каким-то образом, во время ссылки.
Это большая часть того, что вам нужно знать. Остальное раздражает мелочами и дружит с вашими документами по компилятору и компоновщику. В конечном итоге вы узнаете о компоновщиках больше, чем хотели бы.