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 回答