fortran与c++的混合编程问题

sirius_wind 2009-05-19 05:22:27
求助,最近在看linux下gcc的混合编程,我写了个小的实例程序,如下
////c
int main(void)
{
int n=1;
extern void cdf_(int * num);
cdf_(&n);
printf("%d\n",n);
return 1;
}
CCCC fortran
subroutine cdf(num)
num=10;
return
end
#makefile
obj1=main.c
obj2=cdf.for
obj3=main.o
obj4=cdf.o
myexe:$(obj2) $(obj4)
gfortran *.o -o myexe
%.o: %.c
gcc -c *.c
%.o: %.for
gfortran -c *.for
clean:
rm myexe *.o

##########当c的文件为c时正常,程序可以运行,生成myexe,
当把相应的文件都变为c++的时候(.c->.cpp,gcc->g++)在连接时生成不了myexe
报错如下:
main.o(.text+ox28)In function 'main :
:undefined reference to 'cff_(int *)'
main.o(.gun.linkonce.d.DW.ref.__gxx_personality_v0+ox0):undefined reference to
.__gxx_personality_v0'
collect:ld returned 1 exit status
关键是c的能通过,c++的cpp文件的就不行,很让人头疼
...全文
49 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdiso 2009-05-20
  • 打赏
  • 举报
回复
c++ 里面要把fortran 函数名用 extern "C" 包上把。
sirius_wind 2009-05-20
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090520/13/b487b5ff-2a56-4d91-b6fb-9a1fb61b1ca1.html
hjjdebug 2009-05-20
  • 打赏
  • 举报
回复
这里怎么又一份,我在某个中已经回过了!
用条件编译
#ifdef __cpluscplus
extern "C" xxxxxx
#endif

该方法可以解决吧?!
sirius_wind 2009-05-20
  • 打赏
  • 举报
回复
你说的是xp下的vc,linux下gcc会报错

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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