如何在fortran中调用dll

时间:2018-06-03 04:39:29

标签: dll fortran

我有一个dll文件,其中包含一个函数" ProcessWeather"并希望在fortran代码中调用此函数,如下所示:

PROGRAM myprog
!DEC$ ATTRIBUTES DLLIMPORT :: EPLUSWTH


INTERFACE

  SUBROUTINE ProcessWeather(InType,OutType,InFileName,OutFileName,ErrFlag)

    CHARACTER(len=*), INTENT(IN) :: InType       ! InputFile Type
    CHARACTER(len=*), INTENT(IN) :: OutType      ! OutputFile Type
    CHARACTER(len=*), INTENT(IN) :: InFileName   ! InputFile Name (Full path)
    CHARACTER(len=*), INTENT(IN) :: OutFileName  ! OutputFileName (Full path)
    REAL(4), INTENT(OUT)  :: ErrFlag      ! If errors are found,
                                                 ! set to true and put
                                                 ! description put in file.
 END SUBROUTINE
END INTERFACE
END PROGRAM

将dll文件放到我将fortran文件放到的相同位置。 当我编译fortran代码时,我收到以下错误: 未定义的引用processweather _

任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

如果您正在使用gfortran进行编译(正如您的评论似乎暗示的那样),!$DEC指令将被忽略。但您可以使用GCC directives,即ATTRIBUTES指令,并在其中声明属性DLLIMPORT

您也可以使用标准bind(C, name="the_name")。另外,据我记忆,GCC在创建DLL时不需要任何属性来使符号在外部可见。