C语言调用Fortran

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言调用Fortran相关的知识,希望对你有一定的参考价值。

将fortran代码封装成静态链接库(lib),然后调用约定改为 大写(编译器不同配置也不同),在C中包含这个库,然后生命外部函数 就可以调用了 参考技术A 好像也可以用system()调用编译好的Fortran吧。
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>

void main()

char letter;

do
printf("A Display directory listing\n");
printf("B Display disk information\n");
printf("C Change system date\n");
printf("Q Quit\n");
printf("Choice: ");

letter = getch();
letter = toupper(letter);

if (letter == 'A')
system("DIR");
else if (letter == 'B')
system("CHKDSK");
else if (letter == 'C')
system("DATE");

while (letter != 'Q');
getch();

Python调用Fortran的三种形式

Python调用Fortran的三种形式

1. 简介

在一些研究领域很多经典算法和工具都由上古语言Fortran编写,而这部分代码又没有对应的C/C++和Python版本。因此,掌握Python语言调用Fortran程序这一技能,在一些研究领域有助于我们站在巨人的肩上看的更远。

Python调用Fortran可以总结为三种:(1)于 F2PY的f2py调用Fortran;(2)使用动态链接库;(3)利用Python的os包调用Fortran

2. Python调用Fortran的三种方法

2.1 计算圆面积的Fortran函数

接下来将用下面的函数进行演示。这里的例子是返回一个参数的,返回多个参数以及修改参数的Fortran用法,可以参考:Fortran - 程序( Procedures)

function area_of_circle (r)  
! function result     
implicit none      
   ! dummy arguments        
   real :: area_of_circle   
   ! local variables 
   real :: r     
   real :: pi
   pi = 4 * atan (1.0)     
   area_of_circle = pi * r**2  
end function area_of_circle

2.2 基于 F2PY的f2py调用Fortran

新建circle.f90后,在终端中运行如下代码:

python -m numpy.f2py -c circle.f95 -m circle

具体步骤如下图,然后可以看到生成的circle.cpython-36m-x86_64-linux-gnu.so


在Python中,可以直接import上面的函数名

import circle
print(circle.__doc__)
print(circle.area_of_circle(2))


注意上面的__doc __是f2py自动生成的,可以看到fortran模块里面包含几个函数,每个函数里面还可以再调用doc看到接口参数类型。

2.3 使用动态链接库调用Fortran

2.4 利用Python的os包调用Fortran

参考
Python与Fortran混合编程
python调用fortran的3种形式【f2py,动态链接库,os命令】

以上是关于C语言调用Fortran的主要内容,如果未能解决你的问题,请参考以下文章

C语言调用Swift方法并传参数

Qt能调用C语言函数吗

C语言调用Fortran

C语言的调用

C语言函数的运用及调用

C语言中怎样调用函数(举个例子)