C++交叉编译神坑Undefined Symbol

今天在一个C++工程里面引入一个用C写的库的时候编译都通过了,可是在链接的时候出了问题,一直在报Undefined Symbol。

后来经过同事指点发现,原来c++之所以可以重载函数是因为它编译的时候生成的函数名会格外加上它的类型和参数等信息。但是C仅仅生成函数名。所以虽然编译通过了,但是链接的时候,会认为是两个函数,所以会链接失败。

所以编译的时候,把全部的C头文件都加上

#ifdef __cplusplus
extern "C" {

#endif

//代码

#ifdef __cplusplus
}

#endif

然后就能链接通过了

猜你喜欢

转载自blog.csdn.net/qq_21856675/article/details/81033366