Fortran函数在同一模块中子程序找不到的模块中

时间:2018-05-17 19:17:45

标签: oop fortran gfortran

我正在Fortran90中编写一个模块,主要是我在模块中定义了一个函数,以及一个使用该函数的子程序。这是模块的摘录

module Mesh_io
  implicit none
  private
contains
  integer function findkey ( )
    content of this function
  end function
  subroutine getNumber_Mesh ()
    integer :: findkey
    content of the routine
  end subroutine getNumber_Mesh
end module

编译时我得到以下输出:

objects/Main.o: In function `__mesh_io_MOD_getnumber_mesh':
Main.f90:(.text+0x9e): undefined reference to `findkey_'

正如您所看到的,该函数包含在模块中,但由于某种原因,编译器无法找到它。

1 个答案:

答案 0 :(得分:4)

在子例程getNumber_Mesh()中声明了findkey,您将创建一个隐藏该函数的局部变量findkey

对于模块,不需要声明函数(模块函数)的返回值。只需删除声明即可。