Компоновка кодов на fortran и C под *nix

vertyal17

Вобщем вопрос такой, есть два кода
С

#include <stdio.h>
int simple_func(double * time, double * energy, double * temp);

int simple_func(double * time, double * energy, double * temp)
{
printf("Hello world! %f %f %f\n",time[0], energy[0], temp[0]);
return(0);
};

Fortran
 
REAL(8) a,b,c
a=5
b=7
c=3.14
CALL simple_func(a,b,c)
END

Как по-идее правильно собирать программу?
Пробовал так:
  
gcc -g -c func.c
gfortran -c hello.f90
gfortran -o hello hello.o func.o

Вобщем не собирается, ошибка: не найдена функция "simple_func_".
Если использовать такой чит: добавить в коде С к названию функции "_", то программа компиляется и работает.
Но хотелось бы знать, как следует правильно решать такую задачу. Я чувствую что используемый чит - подмена имени функции на какое-то внутрисистемное имя, используемое компилятором фортрана, наверное не хорошо, и должен быть какой-то задуманный способ как можно обойтись без этого.
зы. Может в код надо чтото добавить (типа объявления extern)

procenkotanya

По сути, твой "чит" является правильным подходом. Посмотри что по этому поводу говорит мануал GFortran'а и ещё вот этот документ с более подробной исторической справкой. В последнем показывается, как декларации в макрос оборачивать, что даёт более "правильное" решение.

vertyal17

О, спасибо, буду ознакамливаться
Оставить комментарий
Имя или ник:
Комментарий: