Fortran Coder

标题: .f90如何调用.f文件 [打印本页]

作者: zjk0112    时间: 2022-5-24 09:42
标题: .f90如何调用.f文件
我遇到这样一个问题,我的程序是.f90的。但是我需要调用一个.f文件。我以往的做法是把.f文件中的subroutine复制到.f90程序下。但是这次显示不兼容。请问有什么办法解决吗?


作者: vvt    时间: 2022-5-25 08:16
2个文件。分别编译,然后一起链接。

具体操作要看你用的什么编译环境。
作者: vvt    时间: 2022-5-25 08:18
本帖最后由 kyra 于 2022-5-25 08:57 编辑

在另一个帖子里看到你是linux下用的gfortran。那么很简单。

$ gfortran a.f90 a.f -o ex1ftest3
作者: zjk0112    时间: 2022-5-25 14:10
vvt 发表于 2022-5-25 08:18
在另一个帖子里看到你是linux下用的gfortran。那么很简单。

$ gfortran a.f90 a.f -o ex1ftest3 ...

可是我的a.f90文件是第三方的开源函数库,它里面的路径是用makefile就直接写好的。b.f文件不是这个函数库的,我都是 $make a,就直接编译了。那这种情况b.f文件也是在命令行里添加吗?还是要自己改makefile文件

作者: kyra    时间: 2022-5-25 14:39
你的开源函数库,编译后是个可执行文件还是库?
1. 如果编译后是可执行文件,那看你要如何调用。
      a. 如果是可执行文件调用可执行文件。那么在 b.f 代码里合适位置 system("./a") 就行了。
      b. 如果是内存调用。需要把开源函数库从“编译成可执行文件”修改为“编译成库”
2. 如果编译后就是库。假如编译后是 a.a,那么
$ gfortran a.a b.f -o ex1ftest3
作者: zjk0112    时间: 2022-5-25 17:34
kyra 发表于 2022-5-25 14:39
你的开源函数库,编译后是个可执行文件还是库?
1. 如果编译后是可执行文件,那看你要如何调用。
      a.  ...

make 后会产生一个没有后缀的可执行文件。至于是不是内存调用我不清楚

makefile.png (35.61 KB, 下载次数: 112)

makefile.png

作者: kyra    时间: 2022-5-25 21:02
你确定是可执行文件而不是库的话。进程调用或内存调用都可以(这是两条路),主要取决于你的目的。
最简单的就是在 b.f 代码里合适位置 system("./a") 就行了。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2