Я хотел бы знать, как я могу получить программу на C, чтобы вызвать подпрограмму Fortran 90, содержащуюся с модулем Fortran 90.Вызов подпрограммы в модуле из C
This question deals with a similar problem, и я пытаюсь реализовать это решение, но у меня все еще возникают проблемы.
Здесь приведены примеры игрушек testC.c
файла, который содержит основную функцию, и файл модуля testF.f90
, который содержит подпрограмму Fortran 90.
testC.c
#include <stdlib.h>
#include <stdio.h>
extern void __testF_MOD_fortfunc(int *,float *);
int main() {
int ii=5;
float ff=5.5;
__testF_MOD_fortfunc(&ii, &ff);
return 0;
}
testF.f90
module testF
contains
subroutine fortfunc(ii,ff)
implicit none
integer ii
real*4 ff
write(6,100) ii, ff
100 format('ii=',i2,' ff=',f6.3)
return
end subroutine fortfunc
end module testF
Для компиляции, я использую следующие строки
gcc -c testC.c
gfortran -o testF.f90
gcc -o test testF.o testC.o -lgfortran
Я получаю сообщение об ошибке
testC.o: In function `main':
testC.c:(.text+0x27): undefined reference to `__testF_MOD_fortfunc'
collect2: error: ld returned 1 exit status
Я обновил свой вопрос, чтобы уточнить проблему. А именно, он не выполняется при компиляции и говорит: «Неопределенная ссылка на __testF_MOD_fortfunc – DJames
Порядок, в котором файлы перечислены, относится к компоновщику. Это может решить вашу проблему, чтобы обменять testC.o и testF.o в вашу ссылку. –
Пробная замена testC .o и testF.o. Не повезло, к сожалению. – DJames