2011-08-12 74 views
0

經過漫長的漫長時間後,我發現VS2010連接了錯誤的.lib文件。鏈接器在鏈接* .libs時如何解決歧義?

文件不幸被命名爲相同的名稱。

文件夾鏈接(不需要)LIB在項目屬性設置 文件夾未鏈接(希望)LIB從其他屬性表繼承

期望中的lib是較新的日期,不想要的很老。

鏈接器選擇了不想要的(如上所述)。

鏈接庫有什麼規則? 不應該鏈接器至少給一些含糊不清的警告?

編輯: 符號僅在NEW lib中定義。並且僅在刪除OLD庫時才搜索NEW庫(未更改鏈接器設置)

回答

0

將LIB視爲鏈接器作爲頭到編譯器。 LIB只具有導出符號的簽名,除非它是靜態LIB。 LIB文件沒有任何附加到它們的版本

兩個LIB文件可以具有相同的名稱,因爲兩個頭文件可以具有。就是你,程序員必須使用正確的LIB /頭文件。如果鏈接器沒有找到所有符號,或者符號不正確,它將報告錯誤(就像編譯器會爲頭文件中的不一致符號一樣)。