目前我有 abc.dll,它是 fortran dll。现在我想从 abc.dll 调用 C# 代码。有没有办法从 fortran dll 调用 C# 代码?
谢谢萨加尔
通常,如果您的程序完全是用本机代码编写的(我相信 Fortran dll 会这样),您将需要调用dllexport
从另一个本机代码模块导出()的方法。在这种情况下,您需要创建一个托管 C++ dll,该 dll 公开本机接口并在内部调用 C# 代码。
编辑:如果托管程序是托管代码,并且您需要执行 C#->Fortran (native)->C# 调用序列,则可以使用作为非托管函数指针的委托,如上述注释中链接的那样。但是,如果可执行文件不是托管代码,则需要走我提到的路线。
支持最新 Fortran 语言特性(2003 标准)的编译器将支持 C 互操作。ISO_C_BINDING
您使用模块和BIND
构造通过其 C 接口与其他代码交互。大多数最新的编译器都有它,它是标准的,你可以通过谷歌搜索关键字 ISO_C_BINDING找到很多文档(比如这个)。