我是 Fortran 的新手,所以也许这是一个简单的问题,但是通过查看 SO 上的类似帖子,我还没有找到任何可行的解决方案。
我的问题是,当我尝试在 testrft.f95 中编译我的主程序时,该程序使用 srft.f95 中定义的模块 srftModule 通过执行
gfortran -c dfft.f
gfortran -c srft.f95
gfortran -c testsrft.f95
gfortran dfft.o srft.o testsrft.o -o testsrft
(srftModule 中的子程序需要 dfft.f 中的 Fortran77 代码),我得到链接器错误
testsrftF.o: In function `MAIN__':
testsrftF.f95:(.text+0x98): undefined reference to `fftofmat_'
collect2: ld returned 1 exit status
模块定义如下
module srftModule
implicit none
contains
... (some subroutines)
subroutine fftofmat(A)
implicit none
real*8, dimension(:, :), intent(inout) :: A
...
end subroutine fftofmat
... (some more subroutines)
end module srftModule
在我的主文件中,我有
program testsrft
use srftModule
implicit none
...(code to initialize a 10x10 matrix A)
call fftofmat(A)
end program testsrft
为什么链接器抱怨?