我正在尝试使用gfortran编译器编译有效的Fortran 77文件。我使用以下命令来编译Fortran:

gfortran -c main.f -o main-fortran.o -llapack -lblas


我还需要将此链接与已编译的C ++程序进行链接,如下所示:

g++ -c main.cpp -o main-cpp.o


这两个文件编译时都没有任何错误或警告。

但是,我无法将它们链接在一起成为可执行文件。这是我正在使用的命令:

g++ main-cpp.o main-fortran.o -o run.exe -lgfortran -llapack -lblas


链接器然后给出此错误:

main-fortran.o: In function `main':
main.f:(.text+0x2e18): multiple definition of `main'
main-cpp.o:main.cpp:(.text+0x8e9): first defined here
collect2: ld returned 1 exit status


您可以在以下位置找到源文件:C++Fortran 77

知道我能做些什么来克服这个问题吗?

最佳答案

您有两个主要程序:一个在C ++中,一个在Fortran中。删除Fortran之一

选项1:
Fortran程序的第一位应该是BLOCK DATA段。只需添加

BLOCK DATA INFO


在开始时。

选项2:
删除所有内容,直到第一个END。

关于c++ - 使用Fortran编译和链接C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20866822/

10-14 05:30