簡體   English   中英

通過objdump針對沒有頭文件的so庫進行鏈接

[英]Linking against so library without header files via objdump

所以我有一個.so文件,沒有頭文件,我想編譯代碼並鏈接到該文件(長話)

無論如何,我得到objdump來輸出已解散的標題

objdump -g -x -C libglo_crc.so

我得到這樣的結果:

long int Calculate_Message_CRC__FUcPUc (int iLength /* 0x8 */, unsigned char *iMess /* 0xc */)

因此,我知道這是錯誤的名稱,我創建了一個這樣的原型:

long int Calculate_Message_CRC(unsigned char, unsigned char *);

然后嘗試調用Calculate_Message_CRC函數,但是我總是以未定義的引用錯誤結束:

g++ test.cpp -L. -l glo_crc
undefined reference to `Calculate_Message_CRC(unsigned char, unsigned char*)'

難道我做錯了什么? 沒有供應商提供的標頭,我還可以如何鏈接到該庫?

  • 如前所述,檢查第一個參數它必須是int ,而不是usigned char
  • 我在您的問題中看到objdump -g -x -C libglo_bc.so ,但是您正在鏈接glo_crc-l glo_crc )。 為什么? 編譯器將搜索名稱類似於libglo_crc.so庫,但是根據您的問題,函數Calculate_Message_CRClibglo_bc.so 是錯字嗎? 還是我錯過了什么?

UPD1:正如Steve C所說:您確定該庫已使用相同的編譯器進行編譯嗎? 整改很大程度上取決於編譯器。 一個編譯器可以將Calculate_Message_CRCCalculate_Message_CRC_FUcPUc而另一個編譯器可以像Calculate_Message_CRC_XUzFUz一樣處理它。 您可以使用nmgrep在代碼中找到Calculate_Message_CRC以查看錯誤的名稱。 libglo_crc.so的相同嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM