回 帖 发 新 帖 刷新版面

主题:调用Module的一个奇怪的错误

刚开始写fortran,写了2个文件,一个module文件SubroutineTest,一个主文件UserTest。
    使用ifort编译器
    主文件UserTest调用SubroutineTest下的一个子程序paratest1
    使用命令ifort UserTest.F90
    产生错误
    /tmp/ifortZlWC78.o: In function `MAIN__':
userTest.F90:(.text+0x14f): undefined reference to `subroutinetest_mp_paratest1_'
    这似乎是找不到相关子程序的错误,但我在SubroutineTest已经写了paratest1,并将该module使用命令
    ifort -c SubroutineTest.F90生成了.o以及.mod文件,而且2个文件在同一文件夹下。
    为什么会产生这个错误呢?我的操作是不是有问题?求各位Fortran前辈解答
    下面是2个Fortran文件的具体内容,很简单的2个程序
    module SubroutineTest
      implicit none 
      private
      save
      integer,parameter,public :: a12=1
      public :: paratest1
      contains
      subroutine paratest1
        call paraTest2
        contains
        subroutine paraTest2
           print *,a12
        end subroutine paraTest2
      end subroutine paratest1
    end module SubroutineTest

    program mainTest
      use SubroutineTest,only : Subroutine=>paratest1
      implicit none
      call Subroutine
    end

回复列表 (共3个回复)

沙发

命令使用错误
如果module里面只有声明,那么直接ifort UserTest.F90可以
如果还有实现,得ifort UserTest.F90 SubroutineTest.F90
或者ifort UserTest.F90 SubroutineTest.o

板凳


   的确是这个问题,谢谢啊,困扰我很久了。
   另外,我想问一下,同一文件夹下的module文件可以作为program文件的库引入么?就像java的import,c的include一样,编译的时候只需要ifort xxx.F90就可以了

3 楼

[quote]
   的确是这个问题,谢谢啊,困扰我很久了。
   另外,我想问一下,同一文件夹下的module文件可以作为program文件的库引入么?就像java的import,c的include一样,编译的时候只需要ifort xxx.F90就可以了[/quote]
有include,但不建议这样做,你可以建立一个mak文件,直接用make就可以编译了。详细的可以百度一下。

我来回复

您尚未登录,请登录后再回复。点此登录或注册