使用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 ++库将二进制文件链接在一起?
没有找到相关结果
已邀请:
1 个回复
炬卤遁蝎变