VS编译的时候,可以指定编译为C代码或者C++代码。c/c++->高级。
而当你新建一个cpp文件时,VS很有可能自动会把编译方式由C变成C++编译。
然而,C和C++编译出来的符号的定义是不一样的(因为C++会有重载),所以可能出现:用C++编译出来的目标文件,在调用C编译出来的目标文件里面的函数时,找不到符号。
那么为了实现C++语言调用C语言库,那么应该在C语言库的头文件.h里面,加入extern c的声明,使得就算.h文件被C++文件包含时,仍然能够以C语言的命名方式编译.h文件。另外,由于extern c不能被C编译器所识别,所以所有使用extern c的地方,都应该先判断当前编译器是不是用c++的:
#ifndef __IMB_IMBUF_H__
#define __IMB_IMBUF_H__
#ifdef __cplusplus
extern "C" {
#endif
//.h declaration here.....
#ifdef __cplusplus
}
#endif
#endif