由于C++和C代码在编译的时候,产生的符号的规则不一样,所以在程序链接的阶段,就不认识自己调用的函数产生的符号,导致发生链接错误,无法生产目标文件。
1.C++调用C代码:用extern “C” 将C代码声明包括起来
sum.c
//生成符号 _sum
int sum(int a, int b) {
return a + b;
}
main.cpp
extern "C" {
int sum(int a, int b);
}
int main() {
int ret = sum(10,100); //sum_int_int
return 0;
}
2. C调用C++代码:用extern “C” 将C++代码实现包括起来
sum.cpp
extern "C" {
int sum(int a, int b) {
return a + b;
}
}
main.c
int sum(int a,int b);
int main() {
int ret = sum(10,20);
return 0;
}