在 windows 上与 pgi 一起编译 C/Fortran 代码时出现问题:"main already defined"
Problem compiling C/Fortran code together with pgi on windows: "main already defined"
下面是我想一起编译的 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 的标准程序?
将标志“-Mnomain”添加到 link 以使编译器不将 F90 主对象包含到 link 中,而是使用用户提供的 C 主对象。
下面是我想一起编译的 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 的标准程序?
将标志“-Mnomain”添加到 link 以使编译器不将 F90 主对象包含到 link 中,而是使用用户提供的 C 主对象。