0

私は助けが必要です!

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を使用しています。

4

1 に答える 1

2

おそらく、リンクするか、リンクコマンドの最後にg++明示的に追加する必要があります。-lstdc++

だからどちらか

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

また

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

ところで、makefileを使用する必要があります

于 2011-12-05T20:09:17.610 に答える