在Windows上将C / Fortran代码与pgi一起编译时出现问题:“已定义主体”

时间:2018-12-10 20:21:50

标签: c windows fortran pgi

下面是我想一起编译的C / Fortran文件的玩具示例。

C文件

void testfunc();

int main(void)
{
    testfunc();
}

Fortran文件

subroutine testfunc() bind (C, name = "testfunc")
    write(*,*) "Hello World!"
end subroutine

使用gcc,我可以使用命令生成二进制文件

gfortran -o my_prog main.c testfunc.f90

但是,当我尝试使用pgf90进行相同操作

pgf90 -o my_prog main.c testfunc.f90

我收到以下错误消息:

main.obj : error LNK2005: main already defined in f90main.obj
f90main.obj : error LNK2019: unresolved external symbol MAIN_ referenced in function main

在Windows上是否有使用pgi编译C + Fortran的标准过程?

1 个答案:

答案 0 :(得分:5)

在链接中添加标志“ -Mnomain”,以使编译器不将F90主对象包含在链接中,而是使用用户提供的C main。