Вызов Fortran с C легко, C из Fortran потенциально сложно, C++ из Fortran может стать ... сложной задачей.
У меня есть некоторые примечания elsewhere. Они довольно старые, но в этой области ничего очень быстро не меняется, поэтому там могут быть некоторые полезные указатели.
К сожалению, нет стандартного способа сделать это, и разные компиляторы могут сделать это несколько разными способами. Сказав это, только при передаче строк вы, вероятно, столкнетесь с серьезными головными болями. Ресурс выше указывает на библиотеку под названием CNF, которая призвана помочь здесь, в основном, предоставляя макросы C для сахара в бухгалтерии.
Короткая версия, однако это:
- поплавков и целые числа, как правило, легко - целое число является целым числом, более или менее.
- Строки сложны (потому что Fortrans нередко хранит их как структуры и очень редко, как массивы с нулевым завершением C-стиля).
- C - это вызов по значению, вызов по вызову Fortran, что означает, что функции Fortran всегда являются указателями на значение, с точки зрения C.
- Вы должны заботиться о том, как ваш компилятор генерирует символы: компиляторы часто обращаются C/Fortran символ
foo
в _foo
или foo_
или какой-то другой вариант (см документацию компилятора).
- C имеет тенденцию не иметь большую часть времени выполнения, C++ и Fortran, и поэтому вы должны помнить о том, чтобы каким-то образом связать это с временем ссылки.
Это большая часть того, что вам нужно знать. Остальное раздражает детали и подружится с вашими компиляторами и документами-линкерами. Вы закончите тем, что больше знаете о линкерах, чем вы, вероятно, хотели.
Извините, ваш босс действительно вас ненавидит, или, может быть, вы просто очень ненавидите себя. Но эта страница может быть полезна - http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html –
Возможно, это поможет, если вы сообщите нам точные компиляторы C++ и f77, с которыми вы имеете дело. –
Это должно быть довольно прямолинейно - просто помните, что массивы C являются строковыми, а массивы FORTRAN - столбцами. –