簡體   English   中英

無法在共享庫(.so)中找到符號

[英]Unable to locate symbol inside shared library (.so)

我正在嘗試映射應該存在於共享庫(.so)中的函數的地址。 我成功地能夠打開該庫並嘗試獲取其中的函數地址,如下所示:

fn_read = dlsym (handle, "functionName");

但是我遇到一個錯誤,經檢查錯誤是找不到該符號。 我很確定自己可以正確撥打此電話。 我也100%確保要嘗試映射的函數包含在共享庫本身中。 我不確定在這里做什么...有人可以指出我可能忽略的一些錯誤/觀點嗎?

謝謝,法爾

如果該符號確實存在,則唯一合理的原因是functionName是尚未聲明為extern "C"的C ++函數。 您可以添加extern "C"組件,也可以確定損壞的名稱並找到它。

嘗試使用unix / linux命令nm -g <library>.so 它將列出您所有的C樣式符號。

請注意,C ++參與了“名稱修改”,因此,如果您沒有導出“ C樣式”符號,則很可能是該名稱被修改了並且不能直接訪問。 nm -gC <library>.so還將顯示損壞的C ++名稱。

如果您嘗試訪問C ++符號,並且名稱修改引起了該問題,那么遵循C ++ FAQ指示燈中的有關將C和C ++混合的指南可能會有所幫助。

暫無
暫無

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

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