主题:Linux下C++调用Fortran的接口这样写对吗?
Linux下C++调用Fortran,下面是代码。
如果C语言文件后缀为“.c”,那么C语言程序段编译成功,但是如果我把C语言文件后缀改为“.cpp”,编译不通过,提示不识别add函数。应该怎么让*.cpp的文件也编译成功呢?谢谢!
!Fortran程序段
subroutine add(a, b, c)
implicit none
real:: a, b, c
c = a + b
write(*,*) a, ’+’, b, ’=’, c
return
end subroutine add
//C语言程序段
#include <stdio.h>
extern void add_(float *a, float *b, float *c); //接口语句
int main(int argc, char *argvs[])
{
float a, b, c;
a = 5.0;
b = 7.0;
add_(&a, &b, &c);
return 0;
}
如果C语言文件后缀为“.c”,那么C语言程序段编译成功,但是如果我把C语言文件后缀改为“.cpp”,编译不通过,提示不识别add函数。应该怎么让*.cpp的文件也编译成功呢?谢谢!
!Fortran程序段
subroutine add(a, b, c)
implicit none
real:: a, b, c
c = a + b
write(*,*) a, ’+’, b, ’=’, c
return
end subroutine add
//C语言程序段
#include <stdio.h>
extern void add_(float *a, float *b, float *c); //接口语句
int main(int argc, char *argvs[])
{
float a, b, c;
a = 5.0;
b = 7.0;
add_(&a, &b, &c);
return 0;
}