dll - 如何在fortran中调用dll
问题描述
我有一个 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 代码时,出现以下错误: undefined reference to processweather_
任何建议将不胜感激。
解决方案
如果您使用 gfortran 进行编译(正如您的评论似乎暗示的那样),这些!$DEC
指令将被忽略。但是您可以使用GCC 指令,即ATTRIBUTES
指令并在其中声明属性DLLIMPORT
。
您也可以只使用标准bind(C, name="the_name")
. 另外,据我记得,GCC 在创建 DLL 时不需要任何属性来使符号在外部可见。
推荐阅读
- c - 欧洲航天局考虑使用 Frama-C;需要帮助
- php - ttf 和 woff 文件未使用 HSTS
- java - 在 Java 中实现 Dijkstra 算法
- performance - 在大型网站中为动态内容生成静态页面的好方法以及如何正确管理静态页面
- java - Mojo 使用 h2o.mojo_predict_df 对 Java 错误进行评分
- android - 我想安排工作人员在设备插入并连接到互联网时显示通知
- mysql - 如何选择所有连接记录都不符合条件的记录
- powershell - docker run - Windows Powershell 中的无效引用格式
- python - Numpy - 数组如何重塑它
- csv - 按名称将 CSV 导入谷歌表格