C与Fortran之间的相互调用

C与Fortran之间的相互调用,第1张

C与Fortran之间的相互调用,第2张

c和Fortran是广泛使用的语言。由于它们的语言特点不同,应用场合也大相径庭。c语言通常用于系统软件和一些应用软件的开发,而Fortran在高性能应用中有很好的应用。对于普通用户来说,使用C语言的用户非常多。但是C语言的开发者有时想利用高效的Fortran数据包或者Fortran语言的开发者想借用C提供的强大辅助功能,因此为了方便大家学习两种语言之间的相互调用。下面是一些简单的入门技术介绍。
1。c调用Fortran
编辑Fortran源文件Add.f95
子程序Add (a,b,c)
implicit none
real::a,b,c

!添加例程
!c = a+b

c = a+b
write (*,*) a,'+',b,' = ',c
return
end子程序add
本节介绍Fortran的语法格式。add.f95的作用是
编译add . f95
f95-o add . o-C add . f95
编辑C主程序main . C
1 # include
2
3 extern void add _(float
4
5 int main(int argc,char * argvs[])
6 {
7 float a,b,C;
8a = 5.0;
9b = 7.0;
10 add_(&a,&b,& c);
11
12返回0;
13}
3:声明要调用的函数。这里注意是add_。调用时,使用指针,即变量地址。您应该理解Fortran调用会改变参数值。
10:调用fortran函数
编译执行
# g fortran-o main main . c add . o
#。/main
5.00000+7.00000 = 12.0000[/br]如果使用gcc工具,会产生错误
# gcc-o main main . c add . o
add . o:在函数' add_ '中:
add.f95:(。text+0x4c):对` _ gfortran _ ST _ write '
add . f95:(。text+0x69):对` _ gfortran _ transfer _ real '
add . f95:(。text+0x87):对` _ gfortran _ transfer _ character '
add . f95:(。text+0xa4):对` _ gfortran _ transfer _ real '
add . f95:(。text+0xc2):对` _ gfortran _ transfer _ character '
add . f95:(。text+0xdf):对` _ gfortran _ transfer _ real '
add . f95:(。text+0xed):对` _ gfortran _ ST _ write _ done '
collect 2:LD返回了1个退出状态
您的gcc库路径有问题
OK!你很聪明,知道如何在C程序中调用fortran例程。下一部分我将向您展示如何在Fortran程序中调用C例程!
2、Fortran调用C函数
编辑C源代码Add。c
1 # include
2
3 void add _(float * a,float * b,float * c)
4 {
6 printf(" % f+% f = % f \ n ",* a,* b,* c);
7}
注意基础名“add _”
编译源代码
# gcc -o add.o -c add.c
编辑fortran主程序main.f95,编译执行
1 program main
2 implict none
3 real::I,j,k
4!
5!第一个fortran程序
6!
7 I = 5.0
8j = 8.0
9 call add(I,j,k)
10 stop
11 end program MAIN
NOTE 9 line
# gfortran-o MAIN MAIN . f95 add . o(或f95 -o main main.f95 add.o)
#。/main
5.000000+8.000000 = 13.000000
好的。如果你到了这里,恭喜你,你已经学会了如何在C和fortran之间调用例程!

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C与Fortran之间的相互调用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情