iostream - ошибка компоновщика (при использовании g ++) - PullRequest
0 голосов
/ 05 декабря 2011

Мне нужна помощь!

Я получаю следующие ошибки компоновщика при использовании g ++:

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

Мне нужно вызвать функцию c ++ из программы FORTRAN. Простой пример: Функция C ++ (func_c.cpp) равна

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

Функция FORTRAN (program.f.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

1 Ответ

2 голосов
/ 06 декабря 2011

Возможно, вам нужно связать с g++ или явно добавить -lstdc++ в конце вашей команды связывания.

Так что либо

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

, либо

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

Кстати, вы должны использовать makefile

...