簡體   English   中英

符號名稱后@@符號的含義是什么

[英]what is the meaning of @@ sign after a symmbol name

鏈接二進制文件時出現以下鏈接錯誤:

U std::out_of_range::~out_of_range()@@GLIBCXX_3.4.15

我想知道最后@@的含義。 我認為它是符號名稱的一部分,但同時它傳達了什么意思? 它是否表示僅在stdlib 3.4.15版中找到此符號?

這是一個版本化的符號。 進行API更改后,這允許函數的舊版本和新版本都存在於同一庫中,因此舊程序仍可以動態鏈接到庫的新版本。 我以前沒有見過C ++使用它,但是它在glibc中很常用。

通常,當您將目標文件鏈接到可執行文件(或庫)時,鏈接器將針對每個符號的最新版本進行解析,然后將可執行文件綁定到該版本。

它是否表示僅在stdlib 3.4.15版中找到此符號?

不完全是。 這意味着您的對象/二進制文件已鏈接到該符號的特定版本,理想情況下,該版本將出現在庫的3.4.15版本中,但也會出現在更高版本中(尤其是ABI不變的版本,但可能還會出現在該版本中)。版本的地方有,在這種情況下, 也會有一個較新的版本符號)。

暫無
暫無

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

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