linux下c/c++与古老的fortran混合编程问题

cjnjau 2005-12-27 10:08:29
小弟在网上也找到一些资料,但是大多是基于windows下的,编译软件也尽是vc和visual fortran。
按照网上资料的介绍,修改c/c++源程序,可是在linux下用gcc编译竟无法通过。混合编程是先单独编译c/c++源程序和fortran程序生成obj,然后将两者link就ok,可现在对这方面一无所知。不知道哪位大侠能给出详细的解决方案,既能让c/c++调用fortran,又能让fortran调用c/c++,在下感激不尽。

附:简单的出错程序

c源程序(main.c):
#include <stdio.h>

#ifdef _cplusplus
extern "c" void {
#endif
extern void _stdcall fortran( );
#define fortran FORTRAN
#ifdef _cplusplus
}
#endif

void main()
{
FORTRAN();
}

fortran 程序(forfun.for):

SUBROUTINE FORTRAN()

print *,5

END

用gcc编译c源程序时,
>>gcc -c main.c
>>main.c:9: syntax error before "fortran"
main.c:9: warning: data definition has no type or storage class
main.c: In function `main':
main.c:16: warning: return type of `main' is not `int'
不知道怎么回事??
后来我将main.c里面的_stdcall去掉,进行如下编译:
>>gcc -c main.c
>>main.c: In function `main':
main.c:16: warning: return type of `main' is not `int'
>>f77 -c forfun.for
>>gcc -o main main.o forfun.o
>>main.o(.text+0x11): In function `main':
: undefined reference to `FORTRAN'
forfun.o(.text+0xf): In function `fortran_':
: undefined reference to `s_wsle'
forfun.o(.text+0x28): In function `fortran_':
: undefined reference to `do_lio'
forfun.o(.text+0x30): In function `fortran_':
: undefined reference to `e_wsle'
collect2: ld returned 1 exit status

要崩溃了,哪位大侠能助我啊,感谢不尽。到底怎样才能实现c/c++与fortran之间的相互自由调用?
...全文
243 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧