- 求职 : 机器学习
- 论坛徽章:
- 79
|
本帖最后由 zsszss0000 于 2015-08-12 20:24 编辑
想要在C中调用C++的代码,如下在cppHeader.h头文件中定义了下面的代码:- #ifndef CPP_HEADER
- #define CPP_HEADER
-
- extern "C" void print(int i);
-
- #endif CPP_HEADER
复制代码 相应的实现文件cppHeader.cpp文件中代码如下:- #include "cppHeader.h"
- #include <iostream>
- using namespace std;
- void print(int i)
- {
- cout<<"cppHeader "<<i<<endl;
- }
复制代码 在C的代码文件c.c中调用print函数:- extern void print(int i);
- int main(int argc,char** argv)
- {
- print(3);
- return 0;
- }
复制代码- g++ -c cppHeader.cpp
- gcc cppHeader.o c.c
复制代码 问题1:上面这样编译会出错,为什么?- cppHeader.o: In function `__static_initialization_and_destruction_0(int, int)':
- cppHeader.cpp:(.text+0x2c): undefined reference to `std::ios_base::Init::Init()'
- cppHeader.cpp:(.text+0x31): undefined reference to `std::ios_base::Init::~Init()'
- collect2: ld 返回 1
复制代码 问题2:如果去掉cppHeader.h中的#include <iostream>可以编译成功,问什么? |
|