GCC编译时,出现undefined reference to
1.在A文件夹下有个文件夹B
2.在B文件夹里生成静态库,假设为ld.a,源代码都是C语言写的
3.在A文件夹里的.CPP文件,引用B文件夹里的源代码的的函数,编译的时候链接上该静态库
4.用g++编译A文件里的代码,但是会出现错误:
main.cpp:(.text+0x120e): undefined reference to `OpenConf()'
5.查看静态库ld.a的符号,发现OpenConf是存在的
0000000000000c00 276 FUNC GLOBAL DEFAULT 1 OpenConf
6.执行命令:objdump -d -r main.o 相关信息:
120d: e8 00 00 00 00 callq 1212 <main+0x22e>
120e: R_X86_64_PLT32 _Z8OpenConfv-0x4
7.执行命令:readelf -r main.o 相关信息:
00000000120e 00d500000004 R_X86_64_PLT32 0000000000000000 _Z8OpenConfv - 4
编译的时候,库的链接没有报错,是正确的。现在不知道如何调试,如何去找出错误?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在C++里使用C库的函数时,你加了 extern "C" { } 吗? 否则就会链接找不到。