2010-04-13 17 views
0

說我有一個Visual Studio項目,從C++源生成一個Windows EXE或DLL。如何從特定的靜態鏈接庫中生成構建產品使用的符號列表?

該項目靜態鏈接到幾個庫(.lib)文件。

我想生成項目實際鏈接到的特定.lib中可用功能的子集。

實現此目的的一種非常粗糙的方法是從鏈接器輸入列表中刪除.lib。構建的錯誤列表會顯示所有找不到的符號。

是否有更好的/正確的方式來生成此列表,我很滿意可以作爲項目中的自定義構建步驟運行的解決方案或者針對構建的二進制文件運行的解決方案。

我看過鏈接器和dumpbin命令行選項,但沒有看到任何適當的東西。

+0

對於它的價值,我通常按照您的建議(作爲臨時解決方案) - 在沒有庫的情況下進行編譯,並轉換鏈接器的錯誤消息以生成所有必需功能的唯一列表。 – reuben 2010-04-14 07:41:04

回答

0

您可以嘗試使用gnu binutils中的nm實用程序來列出.lib文件的符號。

1

兩種方式我能想到的做在Visual Studio(2005年):

  • 添加/ VERBOSE鏈接程序選項,或通過在項目屬性頁界面 - >鏈接器 - >常規 - >顯示進度=「顯示所有進度信息」。鏈接器然後輸出它從哪個庫鏈接哪些功能。

  • 將/MAP:mymapfile.map添加到鏈接器選項,或通過項目屬性頁面下的GUI - >鏈接器 - >調試 - >生成映射文件和映射文件名。這會產生一個符號文本文件以及它們從哪個庫鏈接而來。

這是否給你你需要的東西?

相關問題