2011-12-05 40 views
0

我需要幫助!iostream - 鏈接器錯誤(使用g ++)

我使用G ++得到以下鏈接錯誤:

`__static_initialization_and_destruction_0(int, int)': 
undefined reference to `std::ios_base::Init::Init()' 
undefined reference to `std::ios_base::Init::~Init()' 

我需要從FORTRAN程序調用C++函數。 簡單的例子: C++函數(func_c.cpp)是

#include <iostream> 
extern "C" 
{ 
    void cppfunction_(void); 
} 
void cppfunction_(void) 
{ 
} 

FORTRAN函數(programm.f90)是

PROGRAM fprogram 

    call cppfunction() 

END PROGRAM fprogram 

要編譯我用

gfortran –c -c programm.f90 -o programm.o 
g++ -c func_c.cpp -o func_c.o 
gfortran programm.o func_c.o -o main 

我使用Ubuntu(Linux ubuntu 3.0.0-13-generic x86_64 x86_64 x86_64 GNU/Linux)和gnu - 4.6.1

回答

2

您可能需要鏈接g++或在鏈接命令結尾處明確添加-lstdc++

因此,無論

gfortran programm.o func_c.o -o main -lstdc++ 

g++ programm.o func_c.o -o main -lgfortran -lstdc++ 

BTW,你應該使用makefile

+0

非常感謝您!有用! – Maxim13