使用gcc链接Fortran和C ++二进制文件

| 我可以使用gcc分别通过使用g ++或gfortran在C和C ++之间或在C和Fortran之间进行调用。但是,如果我尝试在C ++和Fortran之间进行过程调用,则在使用g ++或gfortran进行编译时会出现错误,因为它们都不了解对方所需的库。 如何链接使用C ++和Fortran编写的源代码的项目?
$ cat print_hi.f90
subroutine print_hi() bind(C)
  implicit none
  write(*,*) \"Hello from Fortran.\"
end subroutine print_hi

$ cat main.cpp
#include <iostream>

extern \"C\" void print_hi(void);

using namespace std;

int main() {
  print_hi();
  cout << \"Hello from C++\" << endl;
  return 0;
}
$ gfortran -c print_hi.f90 -o print_hi.o
$ g++ -c main.cpp -o main.o
我尝试与g ++链接:
$ g++ main.o print_hi.o -o main
print_hi.o: In function `print_hi\':
print_hi.f90:(.text+0x3f): undefined reference to `_gfortran_st_write\'
以及有关未定义引用的其他错误。 并使用gfortran:
$ gfortran main.o print_hi.o -o main
main.o: In function `main\':
main.cpp:(.text+0xf): undefined reference to `std::cout\'
...等等。 如何使用gfortran和g ++库将二进制文件链接在一起?     
已邀请:
您正在寻找 “ 3”链接到标准Fortran库。     

要回复问题请先登录注册