GCC编译时,出现undefined reference to

发布于 2022-09-07 08:32:16 字数 729 浏览 24 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ゃ人海孤独症 2022-09-14 08:32:16

在C++里使用C库的函数时,你加了 extern "C" { } 吗? 否则就会链接找不到。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文