【解决】C、C++混合编译link失败问题

来源:清泛原创     2021-08-25 14:50:49    人气:     我有话说( 0 人参与)

C、C++混合编译时,C头文件不加 extern "C",函数按照C++编译会改变函数名称,导致link时报undefined reference to `xxx` 的 错误。加 extern "C" 解决,但是直接加的话

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"描述保持函数名不变。

混合编译

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: