鍍金池/ 問答/C  C++  Linux  網絡安全/ GCC編譯時,出現(xiàn)undefined reference to

GCC編譯時,出現(xiàn)undefined reference to

1.在A文件夾下有個文件夾B
2.在B文件夾里生成靜態(tài)庫,假設為ld.a,源代碼都是C語言寫的
3.在A文件夾里的.CPP文件,引用B文件夾里的源代碼的的函數(shù),編譯的時候鏈接上該靜態(tài)庫
4.用g++編譯A文件里的代碼,但是會出現(xiàn)錯誤:

    main.cpp:(.text+0x120e): undefined reference to `OpenConf()'

5.查看靜態(tài)庫ld.a的符號,發(fā)現(xiàn)OpenConf是存在的

    0000000000000c00   276 FUNC    GLOBAL DEFAULT    1 OpenConf

6.執(zhí)行命令:objdump -d -r main.o 相關信息:

    120d:    e8 00 00 00 00           callq  1212 <main+0x22e>
    120e: R_X86_64_PLT32    _Z8OpenConfv-0x4

7.執(zhí)行命令:readelf -r main.o 相關信息:

    00000000120e  00d500000004 R_X86_64_PLT32    0000000000000000 _Z8OpenConfv - 4
    
    

編譯的時候,庫的鏈接沒有報錯,是正確的。現(xiàn)在不知道如何調試,如何去找出錯誤?

回答
編輯回答
傻叼

在C++里使用C庫的函數(shù)時,你加了 extern "C" { } 嗎? 否則就會鏈接找不到。

2018年9月20日 00:03