我正在尝试为 C++ 代码制作一个 Fortran 77 包装器。我还没有找到有关它的信息。这个想法是使用来自一个库中的函数,该库是在 Fortran 77 程序中用 C++ 编写的。
有谁知道该怎么做?谢谢!
Lawrence Livermore National Laboratory developed a tool called Babel for integrating software written in multiple languages into a single, cohesive application. If your needs are simple you can probably just put C wrapper on your C++ code and call that from Fortran. However, if your needs are more advanced, it might be worth giving Babel a look.
从 C 调用 Fortran 很容易,从 Fortran 调用 C 可能很棘手,从 Fortran 调用 C++ 可能会变得……具有挑战性。
我在别处有一些笔记。这些已经很老了,但在这类领域没有什么变化很快,所以那里可能仍然有一些有用的指针。
不幸的是,没有真正的标准方法可以做到这一点,不同的编译器可能会略有不同。话虽如此,只有在传递字符串时,您可能会遇到严重的头痛。上面的资源指向一个名为CNF的库,该库旨在提供帮助,主要是通过提供 C 宏来完善簿记。
然而,简短的版本是这样的:
foo
转换为_foo
orfoo_
或其他一些变体(请参阅编译器文档)。这是您需要知道的大部分内容。剩下的就是烦人的细节,并与您的编译器和链接器文档交朋友。您最终会比您可能想要的更多地了解链接器。