c++ - 使用 Fortran 编译和链接 C++

标签 c++ linker g++ fortran gfortran

我正在尝试使用 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/

相关文章:

c++ - 为什么这个 C++ 字符数组似乎能够容纳超过它的大小?

c++ - 删除时的二维数组访问冲突(Borland C++)

c++ - 带字符的矩阵

c++ - 是否可以将 gcc 编译库与 MSVC 一起使用?

c++ - 我们如何获得此输出 C++

linker - 使用 mingw 链接到 libav* 的 undefined reference

c++ - 无法在Debian Linux中编译C++ 17

c++ - m = XMMatrixIdentity() 后崩溃 - 类中的对齐内存?

c++ - 通过 SConstruct 链接以 boost

c++ - 如何正确链接到CMake中的库(使用Boehm GC)?