要嘗試C++中的C代碼纏繞問題,我使用了以下內容: header.h與包裹一個C++代碼
#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
我得到的錯誤是: ENCE到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 to
的std :: basic_ostream> ::操作< <(STD :: basic_ostream> &(*)(STD :: basic_ostream> &))」 source.o :在功能__static_initialization_and_destruction_0(int, int)': source.cpp:(.text+0x45): undefined reference to
的std ::的ios_base :: ::初始化的init()」 source.cpp :(文字+ 0x4a):未定義的引用std::ios_base::Init::~Init()' source.o:(.eh_frame+0x12): undefined reference to
__gxx_personality_v0' collect2:LD返回1退出狀態
我怎麼能讓這個簡單的代碼編譯並運行?它應該作爲我未來 開發的基礎。
謝謝,第一個選項工作:)。如何在一行中執行上述選項1? – user506901
'g ++ -o myprog source.cpp source.c' – trojanfoe
這不會將c源代碼編譯爲C++嗎? – Will03uk