gfortran里面如何调用c语言的代码?下面MinGW为例:
下面是fprog.f90的代码:
program f_prog integer :: i,j(2) real :: r character(len=10) :: str i = 4711 j = (/13, 14/) r = 4712.0 str = "abcd" call c_sub(trim(str)//char(0), i, r, j) end program f_prog
下面的是csub.c:
#include <stdio.h> void c_sub_(char *str, int *i, float *r, int j[], int str_len){ printf("%s %d %d %f %d %d\n", str, str_len, *i, *r, j[0], j[1]); }
编译如下:
gfortran -c fprog.f90 gcc -c csub.c gfortran fprog.o csub.o -o fprog.exe
下面是测试的结果:
./fprog abcd 5 4711 4712.000000 13 14
官方文档里面的编译命令和上面的不一样,如果编译出现问题可以试试下面的:
gfortran -c fprog.f90 gcc -c -fno-leading-underscore csub.c gfortran fprog.o csub.o -o fprog