工作中遇到cpp调用c文件的接口,出现符号找不到的问题,后面定位出是cpp文件找不到c的接口。具体的解决方案和说明参见参考资料。
extern "C"是C++的特性,是一种链接约定,它并不影响调用函数的定义,即使做了该声明,对函数类型的检查和参数转换仍要遵循C++的标准,而不是C。主要是为了解决C++在调用C函数库时,用C++直接链接就会出现不能识别符号的问题,而用上extern "C"后,告诉C++编译器要以C语言的方式编译和链接函数,即直接使用函数名而不是一个经过处理的函数名。
参考资料:
- C与C++接口相互调用