在Windows上编译C/Fortran代码和pgi的问题:"main已定义"

DJa*_*mes 4 c windows fortran pgi

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

C文件

void testfunc();

int main(void)
{
    testfunc();
}
Run Code Online (Sandbox Code Playgroud)

Fortran文件

subroutine testfunc() bind (C, name = "testfunc")
    write(*,*) "Hello World!"
end subroutine
Run Code Online (Sandbox Code Playgroud)

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

gfortran -o my_prog main.c testfunc.f90
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用pgf90时

pgf90 -o my_prog main.c testfunc.f90
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

main.obj : error LNK2005: main already defined in f90main.obj
f90main.obj : error LNK2019: unresolved external symbol MAIN_ referenced in function main
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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