【发布时间】:2011-12-18 20:56:23
【问题描述】:
为了尝试在 C 中封装 C++ 代码,我使用了以下代码: header.h
#ifdef __cplusplus
extern "C"
#endif
void func();
source.cpp
#include "header.h"
#include <iostream>
extern "C" void func()
{
std::cout << "This is C++ code!" << std::endl;
}
和source.c
#include "header.h"
int main()
{
func();
}
为了编译和链接,我使用了以下顺序:
g++ -c source.cpp
gcc source.c source.o -o myprog
我得到的错误是:
转至std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
source.cpp:(.text+0x1c): undefined reference tostd::basic_ostream >::operator& (*)(std::basic_ostream >&))'
source.o: 在函数__static_initialization_and_destruction_0(int, int)':
source.cpp:(.text+0x45): undefined reference tostd::ios_base::Init::Init()'
source.cpp:(.text+0x4a): 未定义引用std::ios_base::Init::~Init()'
source.o:(.eh_frame+0x12): undefined reference to__gxx_personality_v0'
collect2: ld 返回 1 个退出状态
我怎样才能使这个简单的代码编译和运行?它应该成为我未来的基础 发展。
【问题讨论】: