【Fortran】使用f77编译器编译.f文件,编译出的.c文件中出现函数名冲突

发布于 2022-08-29 17:33:50 字数 1524 浏览 20 评论 0

帮物理老师安装一个计算软件【下载】

在make的时候出现这样的错误

make[1]: 正在进入目录 `/home/revol/下载/fac/coul'
cc    -c -o coulcc.o coulcc.c
coulcc.c:2160:12: error: conflicting types for ‘cf1r_’
 doublereal cf1r_(doublereal *x, doublereal *eta, doublereal *zl, doublereal *
            ^
coulcc.c:132:23: note: previous declaration of ‘cf1r_’ was here
     extern doublereal cf1r_(doublecomplex *, doublecomplex *, doublecomplex *,
                       ^
make[1]: *** [coulcc.o] 错误 1

在fortran源码中,cf1r函数只有一个定义

FUNCTION CF1R(X,ETA,ZL,EPS,FCL,TPK1,ETANE0,LIMIT,ERR,NFP,
     X              ACCH,FPMIN,FPMAX,PR,CALLER)

经过f2c转换为.c文件后出现了重复定义

f2c的错误信息如下:

revol@Revol:~/下载/fac/coul$ f2c coulcc.f
coulcc.f:
   coulcc:
   cf1c:
   cf2:
   cf1r:
Warning on line 964 of coulcc.f: inconsistent calling sequences for cf1r,
    arg 1: here double precision variable, previously double complex variable.
    arg 2: here double precision variable, previously double complex variable.
    arg 3: here double precision variable, previously double complex variable.
   f20:
   cf1a:
Warning on line 1147 of coulcc.f: local variable ci never used
   rcf:
   tidy:

在.c文件中出现了两次定义:

doublereal cf1r_()
和
extern doublereal cf1r_()

求解!这个软件弄了很久了,本人因为不会fortran所以完全看不懂源码。

我的编译环境是ubuntu 14.04,f77什么的都是直接从源里装的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流星番茄 2022-09-05 17:33:50

别转了,混编吧 iso_c_binding很给力

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文