【发布时间】:2020-11-24 11:01:23
【问题描述】:
我们有一个新的 Fortran 2003 代码,它调用并链接到 Fortran 77 库(在外部包中)。有没有办法在 F2003 的外部库中为 F77 函数和子例程编写声明,以确保在使用错误参数类型调用函数时给出错误消息?一种方法是为每个函数编写包装器,但这似乎需要做很多工作。
(顺便说一句,F77代码实际上是调用C代码的包装器。理想情况下最好在F2003中重写C包装器,但这也是很多工作)。
【问题讨论】:
-
您使用的是哪个编译器?一些编译器提供了为外部过程自动生成(和检查)接口的选项。
-
我们将 gfortran 用于新的 fortran 代码。外部函数实际上是用 C 编写的,但使用古老的 cfortran.h 接口库导出。
-
扔掉 FORTRAN 包装器并直接与 C 函数接口对您来说有多容易?使用 Fortran 非常现代的 与 C 特性的互操作性?
-
@HighPerformanceMark:这可能是最好的主意,但是有很多函数,并且当前的 fortran-ABI 库中有一些额外的代码隐藏了 C 指针。理想情况下,我希望保留相同的 API,以便现有代码可以只包含原型并对其进行类型检查。
-
您在问题中说“编写声明”和“编写包装器” - 要明确您想要做的是“编写接口”。根据接受的答案,您的问题似乎是如何自动生成这些接口?否则,手动创作它们是显而易见的答案。
标签: fortran fortran77 fortran95