gfortran里面调用c语言的代码

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


 

你可能感兴趣的:(gfortran里面调用c语言的代码)