在C++中引用C编译器编译过的函数的时候就会用到:extern "C"这个关键字.如下就是在C++环境中引用C
函数的例子:
***************************************************Begin*******************************************************
/* c语言头文件:cExample.h */
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
extern int add(int x,int y);
#endif
/* c语言实现文件:cExample.c */
#i nclude "cExample.h"
int add( int x, int y )
{
return x + y;
}
// c++实现文件,调用add:cppFile.cpp
extern "C"
{
#i nclude "cExample.h"
}
int main(int argc, char* argv[])
{
add(2,3);
return 0;
}
如果C++调用一个C语言编写的.DLL时,当包括.DLL的头文件或声明接口函数时,应加extern "C" { }。
***************************************************End*********************************************************
造成这种现象的原因是C语言和C++的编译器不同,众所周知,C++支持函数重栽,C不支持函数重栽,而经过
编译的函数名称是唯一的,为了适应这种需求,C++编译器会在函数名中加入一些新的信息,比如同样对 int Test()
函数进行编译,C生成的新名称是_test,而C++编译器生成的新名称是_Test_int.
基于这种原因,在进行C和C++混合编程的时候,一定要加上extern "C",通过C编译器的方式编译引用文件,从而
找到你要调用的函数,否则编译出错.