在Ubuntu上,Fortran可以通过使用ISO_C_BINDING模块来调用C函数。这个模块提供了一系列的接口和类型定义,使得Fortran代码能够与C语言兼容。以下是一个简单的例子,展示了如何在Fortran中调用C函数。
首先,你需要一个C函数。假设我们有一个简单的C函数,它接受两个整数参数并返回它们的和。我们将这个函数放在一个名为example.c
的文件中:
// example.c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
接下来,我们需要创建一个Fortran接口文件,它将声明与C函数相对应的接口。我们将这个文件命名为example.f90
:
! example.f90
program call_c_function
use iso_c_binding, only: c_int, c_sum
implicit none
interface
function c_sum(a, b) bind(c, name="add")
import c_int
integer(c_int), value :: a, b
integer(c_int) :: c_sum
end function c_sum
end interface
integer(c_int) :: result
result = c_sum(3, 4)
print *, "The sum is ", result
end program call_c_function
在这个Fortran程序中,我们使用了iso_c_binding
模块中的c_int
类型来匹配C语言中的int
类型。我们还使用了bind(c, name="add")
属性来指定我们要调用的C函数的名称。
现在,你需要编译这两个文件,并将它们链接在一起。你可以使用gfortran
编译器来完成这个任务。在终端中,运行以下命令:
gfortran -c example.c -o example.o
gfortran -c example.f90 -o example_f.o
gfortran example.o example_f.o -o call_c_function
这些命令将分别编译C和Fortran源文件,并生成目标文件(.o
)。最后,我们将这两个目标文件链接成一个可执行文件call_c_function
。
现在,你可以运行这个程序来调用C函数了:
./call_c_function
这将输出:
The sum is 7
这就是在Ubuntu上使用Fortran调用C函数的基本过程。注意,为了确保类型匹配和正确的调用约定,你需要在Fortran接口中使用与C语言相同的类型和命名约定。