问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++ 编译报错 undefined reference to (找不到声明)快速排查

发布网友 发布时间:2024-09-26 18:14

我来回答

1个回答

热心网友 时间:2024-10-03 19:00

可能原因:

Case 1: 链接时缺少定义了XXX的源文件、目标文件或库文件。

1.1 缺少源文件。

1.2 缺少目标文件。

1.3 缺少库文件。

Case 2: 链接顺序不对,多个库文件链接顺序问题或存在嵌套链接。

Case 3: 函数符号修饰不一致。

3.1 函数定义和声明不一致。

3.2 C和C++混合编程(在C++代码中链接C语言的库),解决方案是使用extern "C"处理为模块。

3.3 编译器版本或编译器选项不一致。

Case 4: 把模板函数写进了cpp文件中。

Case 5: API隐藏,常见于开源库不兼容的情况,库升级后API变为隐藏。

手动找到函数声明:

如何查看动态库文件提供了哪些函数符号?将bar.cpp文件编译成动态库bar.so文件,该文件提供了函数void bar(int)的实现。使用nm命令可以查看bar.so库中提供的函数符号。

nm -C可以查看函数名字修饰之前的名字。

如何推函数声明?已知函数修饰后的名字,可以使用c++filt命令反推函数源文件中的声明。

总结:

1. 检查编译器是否找不到定义了XXX的文件。

2. 检查由于函数修饰原因,定义了XXX的文件中是否缺少想要的XXX符号。

3. 找到想要的符号,但该符号是隐藏属性,不能链接使用。

若不确定库中是否有这个XXX符号,使用nm查找,使用c++filt从修饰后的符号找函数声明。

热心网友 时间:2024-10-03 18:56

可能原因:

Case 1: 链接时缺少定义了XXX的源文件、目标文件或库文件。

1.1 缺少源文件。

1.2 缺少目标文件。

1.3 缺少库文件。

Case 2: 链接顺序不对,多个库文件链接顺序问题或存在嵌套链接。

Case 3: 函数符号修饰不一致。

3.1 函数定义和声明不一致。

3.2 C和C++混合编程(在C++代码中链接C语言的库),解决方案是使用extern "C"处理为模块。

3.3 编译器版本或编译器选项不一致。

Case 4: 把模板函数写进了cpp文件中。

Case 5: API隐藏,常见于开源库不兼容的情况,库升级后API变为隐藏。

手动找到函数声明:

如何查看动态库文件提供了哪些函数符号?将bar.cpp文件编译成动态库bar.so文件,该文件提供了函数void bar(int)的实现。使用nm命令可以查看bar.so库中提供的函数符号。

nm -C可以查看函数名字修饰之前的名字。

如何推函数声明?已知函数修饰后的名字,可以使用c++filt命令反推函数源文件中的声明。

总结:

1. 检查编译器是否找不到定义了XXX的文件。

2. 检查由于函数修饰原因,定义了XXX的文件中是否缺少想要的XXX符号。

3. 找到想要的符号,但该符号是隐藏属性,不能链接使用。

若不确定库中是否有这个XXX符号,使用nm查找,使用c++filt从修饰后的符号找函数声明。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
若cpu一秒执行n次运算需耗能5w,那执行2n次运算要耗能是大于小于还是等于... 大神们,N5G跟N5W哪里不一样? 刚出生的婴儿会感冒吗 刚出生宝宝感冒的症状 怀庄永佳福代理,什么品牌白酒好呢? 做白酒品牌代理,有怀庄永佳福牌子怎么样? 怀庄永佳福白酒喝得人多吗?代理怎么样? 为什么很多女性都把男闺密当作结婚对象? 关于电影“罗生门”的问题 实际利率法是指什么 南京铁道职业技术学院对报考考生的身体,视力要求? C++中报错undefined reference to `WinMain'怎么解决? ...vscode编译C++多文件(包含模板类)|解决Undefined reference to... 郑州城轨交通中等专业学校招生收不收近视眼,我中等近视,400多度,能不... 初一初二不好好学习,初三应该怎么努力? C语言编译.o时提示undefined reference to `main'怎么办? 城市轨道交通运营管理要求视力吗? c语言中undefined reference to ""怎么解决 有人在村里诋毁谩骂可以打官司吗 初一初二没好好学,初三应该怎么努力? 被别人骂了属于人身攻击,可以直接进行起诉吗? 梦参老和尚开示:为什么修道的人障碍很多 恶意诋毁他人可以起诉吗 梦见我男朋友和别人结婚了的预兆 想磷脂给妈妈吃,想知道买宝健磷脂好不好? 那个牌子的磷脂比较好,而且价格便宜 想给母亲买点磷脂,大家觉得什么牌子会更好一些呢? 各位大侠:国产的磷脂哪家公司质量最好? 9岁孩子过度肥胖的危害有哪些? 笔记本c466蓝屏死机(GF8400独立显卡,玩魔兽3时偶尔出现,一键恢复后正 ... 什么意思c语言程序编程 undefined reference to ? gcc 编译时报错"undefined reference to 'main'" 问题 【c++】老是遇到 undefined reference to `L::L()' 这个错误怎么解决呀... 【足历10·23】曼城6-1狂屠曼联,巴洛特利灵魂拷问:为什么总是我? 【绿茵人物】三十而立再失业,巴洛特利是怎么从足坛金童走到这一步... 原耽推文:晋江总分榜耽美好文(4) 电信卡能不能帮联通卡挂失? 签字笔弄衣服上怎么洗 干贝虾仁粥的味道该怎么评价? 快递片区承包怎么干的 老师们看西红柿为何不膨果 漏电开关跳闸后推不上去怎么办? 鱼缸里的不明小生物是鱼籽吗? 为汝窑打Call,六个问题了解真正的汝窑器 脖子后左边长了个小疙瘩,大约好几个月了,不疼不痒,按一按很硬,请问这... 深圳有哪些无人机公司 中国最好的无人机公司有哪些品牌 脖子上长了个疙瘩不疼不痒怎么回事 脖子后面长了个软软的包,不疼不痒的,看不出来,摸得时候,能感觉出来 无人机有哪些公司