Насколько "дорог" стоит называть Фортран из C ++? - PullRequest
2 голосов
/ 02 апреля 2019

Я пишу программу на C ++, которая вызывает некоторые функции, которые я написал на Fortran. Я собирался протестировать очень простой пример, в котором я вызываю функцию toRadians из кода C ++:

real function toRadian(degree)
  implicit none

  real, intent(in) :: degree
  real :: radians

  radians = (degree*PI)/180
  return
end function toRadian

И вот мне интересно, стоит ли это того? Когда я закончу все это, эта функция будет вызываться в Фортране, где будет выполняться большая часть вычислений, но выполнение этого базового примера заставило меня задуматься о том, вызывает ли для простых вычислений, подобных этой, функцию Фортрана дороже, чем просто имея эту функцию в C ++?

Извините за мое незнание. Я не очень уверен, как работает связь между этими скомпилированными кодами. (Я также новичок в Fortran, поэтому, если вы хотите сделать какие-либо замечания по поводу предыдущей функции, пожалуйста, продолжайте).

Спасибо за ваше время и хорошего дня.

1 Ответ

2 голосов
/ 02 апреля 2019

Вызов функции на Фортране так же дешев, как и вызов другой функции C ++.Обычно.

Проблема в совместимости двух языков.Лучший способ начать это в Фортране - использовать iso_c_binding, чтобы функция имела соглашение о вызовах C.

Тогда другая проблема заключается в том, что оба языка требуют своих собственных библиотек времени выполнения, и нет флага компоновщикаиспользовать оба.Поэтому обычной практикой является создание разделяемой библиотеки для кода на Фортране и ее привязка к приложению C ++ (и наоборот, когда он вызывает C ++ из Fortran).

...