[英]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.