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

And*_*dez 2 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
Run Code Online (Sandbox Code Playgroud)

编译时我得到以下输出:

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

如您所见,该函数包含在模块中,但由于某种原因编译器找不到它。

Ale*_*ogt 5

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

对于模块,不需要声明函数(模块函数的)的返回值。只需删除声明就可以解决问题。