KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I can use gcc to make calls between C and C++ or between C and Fortran by using g++ or gfortran, respectively. But if I try to make procedure calls between C++ and Fortran I get errors when compiling with either g++ or gfortran because neither knows about the other's required libraries. How can I link a project that uses source code written in both C++ and 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 I try linking with 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' and further errors regarding undefined references. And with gfortran: $ gfortran main.o print_hi.o -o main main.o: In function `main': main.cpp:(.text+0xf): undefined reference to `std::cout' ...and so forth. How can I link binaries using the gfortran and g++ libraries together?
Tags (comma-separated)
Save Edits
Cancel