【发布时间】:2014-03-18 11:06:45
【问题描述】:
我有一个包含库 API 的模块,例如
module external_api
public :: func1
private
...
contains
function func1(arg1, arg2) result (r)
type(api_type1), intent(in) :: arg1
integer, intent(out) :: arg2
type(api_type2) :: r
...
end function func1
...
end module
API 函数将从 3rd 方代码调用,但我不想显示/公开库的源代码。
在 C 语言中,我只需提供一个带有声明和编译库的头文件。在 Fortran 中,我提供编译的 .mod 文件和编译的库。但是 .mod 文件是一种二进制格式,因此无法“读取”函数的声明。
从闭源 Fortran 库中声明 API 函数的最佳做法是什么?
【问题讨论】:
-
使用哪个编译器?
-
我试着问一般情况,但我通常需要 Linux 和 Windows 以及 Intel Fortran 和 gfortran
-
您通常可以为特定编译器提供 mod 文件
-
你的意思是编译的 .mod 文件?这些是二进制的,所以它们对编译器很好,但很难被人类阅读。我的问题是给那些试图编写调用库 API 的代码的人什么。 (显然可以提供文档,但这与 C-header 并不完全相同)
-
如何记录您的代码?使用类似Doxygen 的东西。然后生成包含您的已发布 API 的手册页(或其他)。就像您的
C示例一样,您可以阅读/usr/include/string.h或man strcat(例如)。只是一个想法。
标签: c fortran header-files