我有一个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 _
任何建议都将受到高度赞赏。
答案 0 :(得分:0)
如果您正在使用gfortran进行编译(正如您的评论似乎暗示的那样),!$DEC
指令将被忽略。但您可以使用GCC directives,即ATTRIBUTES
指令,并在其中声明属性DLLIMPORT
。
您也可以使用标准bind(C, name="the_name")
。另外,据我记忆,GCC在创建DLL时不需要任何属性来使符号在外部可见。