欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[c++]引入了头文件和动态库,为什么找不到函数实现

程序员文章站 2022-04-20 08:37:06
问题现象undefined reference to xxx一般copy了别人的代码,直接拿来编译,可能会遇到这种问题。网上找了很多答案都没有对应的解答。头文件已经引用了,而且对应的库文件或者源码文件都在工程里,但是就是提示找不到。IDE可以提示跳转,说明是可以找到函数实现的,但是跳转直接跳到了.c文件里。这才让我恍然明白,这个文件是c写的,而我的工程是c++的。问题解决因为c和c++对函数名的编码是不一样的,c直接就是“明文”,而c++会有一定的格式。所以对于c文件的header,c+...

问题现象

undefined reference to xxx

[c++]引入了头文件和动态库,为什么找不到函数实现

一般copy了别人的代码,直接拿来编译,可能会遇到这种问题。网上找了很多答案都没有对应的解答。

头文件已经引用了,而且对应的库文件或者源码文件都在工程里,但是就是提示找不到。
IDE可以提示跳转,说明是可以找到函数实现的,但是跳转直接跳到了.c文件里。

这才让我恍然明白,这个文件是c写的,而我的工程是c++的。

问题解决

因为c和c++对函数名的编码是不一样的,c直接就是“明文”,而c++会有一定的格式。所以对于c文件的header,c++程序找不到对应的实现。
需要加上如下处理

#ifdef __cplusplus
extern "C" {
#endif

xxxx
xxxx


#ifdef __cplusplus
}
#endif

本文地址:https://blog.csdn.net/mimiduck/article/details/108869310