由于使用c和c++编译函数时,其对函数的标记名称不同。
为了使c编译的函数能在c++中正常调用,必须添加 extern "c"的说明,表示它是用c编译的。
一般使用方法:
确定在函数属于哪个c函数库。添加头文件的方法如下:
#ifdef _cplusplus
extern "C"
{
#endif
#include <...h> (所在的头文件)
#ifdef _cplusplus
}
#endif
扩展:C++编译的DLL,为什么要加上extern "c"
因为c++编译器考虑函数重载的原因,编译出来的函数名会增加附加符号;因此如果直接用c++编译器编译的DLL,如果被c程序引用,会出错,因为找不到正确的导出函数名。为了统一,在DLL导出时都添加extern "c",表示以C的方式编译;在导入DLL时,也指定以C方式,这样可以防止符号不一致的问题。