簡體   English   中英

目標文件不包含應存在的符號

[英]Object files do not contain symbols that should be there

這是我得到的特定錯誤:

libFoo.so: undefined reference to `IID_IFOOBAR'
collect2: ld returned 1 exit status
make: *** [/home/F.exe] Error 1

當我嘗試檢查目標文件Ao中的符號時

nm A.obj | grep IID_

我沒有在“ IID_IFOOBAR”的目標文件中列出任何符號,因為它在頭文件中定義為:

extern const blahType IID_IFOOBAR

我想念什么嗎? 由於IID_IFOOBAR是extern變量,是否應該在其他地方對其進行不同的定義? 如果這個問題太具體,我將其刪除。 但是也許有人的直覺會在這里幫助我。

[編輯]在某處添加變量的定義(不帶extern )。 沒有初始化程序的外部標識符不是定義-定義必須在其他位置。

為了使extern 聲明的符號在符號表中顯示為“未定義”,您實際上應該在庫中使用它。

如果您的目標文件既不包含符號定義 (相對於聲明),也不在其函數內部使用該符號,則該符號將不會出現在符號表中。 為什么要這樣

暫無
暫無

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

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