在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/C  C++  Linux  網(wǎng)絡(luò)安全/ GCC編譯時(shí),出現(xiàn)undefined reference to

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

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

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

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

    0000000000000c00   276 FUNC    GLOBAL DEFAULT    1 OpenConf

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

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

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

    00000000120e  00d500000004 R_X86_64_PLT32    0000000000000000 _Z8OpenConfv - 4
    
    

編譯的時(shí)候,庫(kù)的鏈接沒(méi)有報(bào)錯(cuò),是正確的?,F(xiàn)在不知道如何調(diào)試,如何去找出錯(cuò)誤?

回答
編輯回答
傻叼

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

2018年9月20日 00:03