2015-05-29 82 views
1

編輯:解決與詹姆斯麥克奈利斯的建議,這導致我犯了圖書館。這是我沒有用dumpbin檢查過的。Visual Studio:哪個源文件包含特定的庫(使用「pragma comment」)?

我在構建一個Visual Studio 2013項目,它使用「#pragma comment」鏈接靜態庫,而不是在項目屬性中列出這些庫。在用新版本替換庫後,我收到一個鏈接錯誤,因爲它仍在嘗試查找一些舊庫,例如它應該在鏈接「library_v12.lib」時找不到「library_v9.lib」。我怎樣才能找到舊圖書館被請求的地方?以下是我試過的:

  • 刪除所有對象等,並從頭開始重建。

  • 搜索「#pragma comment」不起作用,因爲它構建在多個宏層中,版本號從_MSC_VER獲得,因此「9」和「12」實際上從不會真正出現在源中的任何位置。

  • 在所有鏈接到可執行文件的庫上運行dumpbin/DIRECTIVES。他們都參考了正確的「12」庫版本。

+3

使用'/ verbose'鏈接並搜索「library_v9.lib」的輸出。 –

+0

這個伎倆! –

+1

@TScherer你可能應該爲這個問題添加一個答案,而不是編輯解決。 – drescherjm

回答

0

鏈接器有一個/verbose開關,這將導致其打印出哪些庫被打開的詳細日誌,什麼符號時,搜索,以及爲什麼它正在搜索的符號。

通常,調試此類問題最直接的方法是將/verbose添加到鏈接器選項中,在文本編輯器中打開構建日誌並搜索您感興趣的庫名稱或符號。在這種情況下,搜索「library_v9.lib」。鏈接器會告訴你是什麼導致它打開該庫。

0

你是否檢查Properties-> Linker-> Input section?

+0

是的,它不在那裏。這是另一個我沒有用dumpbin檢查過的圖書館,並且用「/ verbose」鏈接了我。 –

相關問題