Fortran Coder

标题: C++调用fortran程序DLL [打印本页]

作者: joy111111    时间: 2016-11-30 09:41
标题: C++调用fortran程序DLL
各位fortran大神好!向您求教一个问题。我想用C++调用已有的fortran程序(生成dll)。我的fortran程序的函数都是在module里面写的,如:fortran里面有MODULE f_gpsmjd,在它里面定义了函数GPSMJD.在生成dll后,不能直接extern "C" {double _stdcall  GPSMJD(double ,int); },就是怎么调用module里面的函数呢?
非常感谢!

作者: joy111111    时间: 2016-11-30 11:38
解决了,添加C属性 !DEC$ ATTRIBUTES C, DLLEXPORT :: GPSMJD
作者: fcode    时间: 2016-11-30 11:43
论坛“编程工具区”有混编分类,里面有不少帖子
你可以考虑用 ISO_C_Binding 的方式实现,更规范。
作者: joy111111    时间: 2016-11-30 13:26
啊 还是不对,未解
作者: joy111111    时间: 2016-11-30 14:24
fcode 发表于 2016-11-30 11:43
论坛“编程工具区”有混编分类,里面有不少帖子
你可以考虑用 ISO_C_Binding 的方式实现,更规范。 ...

您好!我现在可以使用显式调用,如GPSMJD gpsmjd= (GPSMJD )GetProcAddress(hLibrary,"f_GPSMJD _mp_GPSMJD ");  但还是实现不了常用的隐式方法,我在您所说的模块看到http://bbs.fcode.cn/forum.php?mo ... ypeid%26typeid%3D16,但没有找到用C++调用fotran的module里面函数的帖子。 您能否给一个小例子,非常感谢~~
作者: fcode    时间: 2016-11-30 14:43
试试 Bind( C , Name = "f_GPSMJD" )




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2