回 帖 发 新 帖 刷新版面

主题: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;
 }

回复列表 (共3个回复)

沙发

extern "C" extern void add_(float *a, float *b, float *c);
试试看

板凳

不行的话
extern "C" extern void __stdcall add_(float *a, float *b, float *c);
再试试看

3 楼

[quote]不行的话
extern "C" extern void __stdcall add_(float *a, float *b, float *c);
再试试看[/quote]
谢谢
我用
extern "C" 
{
void add_(float *a, float *b, float *c);
}
通过了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册