C、C++混合编译时,C头文件不加 extern "C",函数按照C++编译会改变函数名称,导致link时报 undefined reference to `xxx` 的 错误。加 extern "C" 解决,但是直接加的话,又报编译语法错误。
解决方法:
头文件定义中添加带宏判断的extern "C":
#ifdef __cplusplus
extern "C" {
#endif
// C funcs in header
#ifdef __cplusplus
}
#endif
一定要加宏判断,否则编译C文件时不能识别extern "C"描述报语法错误,而在编译Cpp文件时应用extern "C"描述保持函数名不变。