Проблема с компоновкой при вызове функции Fortran из кода C/C++
Я пытаюсь вызвать функцию написанную на Fortran из кода на C. Но при компоновке получаю ошибку "undefined reference".
Пример функции на Fortran в файле fort.f90:
FUNCTION CULC(A,B) RESULT(SUM) BIND(C,name='CULC99')
REAL A,B,SUM
SUM = A + B
RETURN
END
Основной код на C, файл hello.c
#include <stdio.h>
extern float CULC99(float *a, float *b);
int main() {
float a = 10; float b = 10;
float c;
c = CULC99(&a,&b);
printf("%f", a);
return 0;
}
Компилирую для Windows с помощью gfortran и g++ в среде Cygwin64 (решив проблемы с недостающими библиотеками)
Проверял имя функции в объектном файле с помощью objdump, имя совпадает:
Не понимаю чего не хватает.
Пробовал делать тоже самое (вызывать функцию из другого объектного файла) для чистого C, всё прекрасно компонуется.
Ответы (1 шт):
Как правильно заметил @user7860670
Не стоит путать C и C++
Проблема оказалась в том, что я перепутал компиляторы gcc и g++.
После добавления extern "C" компилятор g++ нашёл вызываемые функции.
Возможно gcc справиться с компоновкой при использовании extern, но я не смог это проверить, т.к. нужно подключать недостающие библиотеки, а у меня уже нет сил на это, после 3-х дней войны с компоновщиком =(

