使用gfortran

时间:2019-12-29 15:44:02

标签: oop fortran gfortran

我正在努力使一个简单的面向对象程序起作用。

我在文件testmod.f中有一个模块:

  module testmod
    implicit none

  type testobject
      real :: X
  contains
      procedure, public, pass(this) :: initialize
      procedure :: print
  end type testobject

  contains
    subroutine initialize(this, x)
      class(testobject) :: this
      real :: x

      this%X = x
    end subroutine initialize

    subroutine print(this)
        class(testobject) :: this
        print *, this%x
    end subroutine print
  end module testmod

要测试代码,我有以下测试程序:

   program test
     use testmod
     type(testobject) :: testobj

     call testobj%initilize(0.0)
   end program test

我使用gfortran编译模块:

gfortran -ffree-form testmod.f -shared

和测试程序:

gfortran -ffree-form test.f

上次gfortran调用的结果如下:

/tmp/ccGPbBvF.o: In function `MAIN__':
test.f:(.text+0xb): undefined reference to `__testmod_MOD___vtab_testmod_Testobject'
test.f:(.text+0x2a): undefined reference to `__testmod_MOD_initialize'
collect2: error: ld returned 1 exit status

另一方面,如果我调用testobj%initilize(“ x”),则由于未按预期方式使用实数调用子例程而收到错误消息。

我想我应该在其他问题上给gfortran打电话吗?

0 个答案:

没有答案