使用Fortran编译和链接C ++

时间:2014-01-01 08:21:33

标签: c++ linker g++ fortran gfortran

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

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

我还需要将它与C ++程序联系起来,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

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

1 个答案:

答案 0 :(得分:1)

你有两个主程序:一个用C ++编写,一个用Fortran编写。通过

删除Fortran

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

BLOCK DATA INFO

一开始。

选项2: 删除第一个END之前的所有内容。