如何从 Fortran dll 调用 C# 代码

发布于 2024-07-29 19:18:42 字数 112 浏览 6 评论 0原文

目前我有 abc.dll,它是 fortran dll。 现在我想从 abc.dll 调用 C# 代码。 有没有办法从 fortran dll 调用 C# 代码?

谢谢 萨加尔

Currently I have abc.dll which is fortran dll. Now I want to call C# code from abc.dll. Is there any way to call the C# code from fortran dll ?

thanks
Sagar

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

歌枕肩 2024-08-05 19:18:42

通常,如果您的程序完全用本机代码编写(我相信 Fortran dll 就是这样),您将需要调用从另一个本机代码模块导出的方法 (dllexport)。 在这种情况下,您需要创建一个托管 C++ dll,它公开本机接口并在内部对 C# 代码进行调用。

编辑:如果托管程序是托管代码,并且您需要执行 C#->Fortran(本机)->C# 调用序列,则可以将委托用作非托管函数指针,如上面注释中链接的那样。 但是,如果可执行文件不是托管代码,则您需要采用我提到的路线。

Typically, if your program is written entirely in native code (as I believe the Fortran dll would be), you'll need to call a method that's been exported (dllexport) from another native code module. In this case, you'll want to create a Managed C++ dll that exposes a native interface and internally makes the call into the C# code.

Edit: If the hosting program is managed code, and you need to do a C#->Fortran (native)->C# calling sequence, then delegates as unmanaged function pointers can be used as linked in the comments above. However, if the executable is not managed code, you'll need to go the route I mentioned.

盗琴音 2024-08-05 19:18:42

支持最新 Fortran 语言功能(2003 标准)的编译器将支持 C 互操作。 您可以使用 ISO_C_BINDING 模块和 BIND 构造通过其 C 接口与其他代码进行交互。 大多数最新的编译器都有它,它是标准的,您可以找到很多文档(例如 这个)通过 Google 搜索关键字 ISO_C_BINDING。

Compilers supporting recent Fortran language features (the 2003 standard) will support C-interoperation. You interface with other code through its C interface, using the ISO_C_BINDING module and the BIND construct. Most recent compilers have it, it's standard and you can find a lot of documentation (like this one) by Google'ing the keyword ISO_C_BINDING.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文