2011-06-19 72 views
34

我有.lib文件從C代碼編譯。我如何知道在運行時是否需要此自包含靜態庫或只是一個導入庫和DLL?有一些dumpbin選項我錯過了嗎?知道.lib是靜態還是導入

+0

奇怪的問題。如果你沒有DLL,那麼你只能穿過你的手指。 –

+2

通常你會閱讀文檔。如果你沒有文檔,也不知道.lib的出處,那麼你應該考慮使用它。 –

+3

不幸的是,許多圖書館都帶有已過時的「入門」或「自述」文件,以及一些隱藏的配置選項,如果它構建爲靜態或動態的。當它甚至不是我想要的圖書館時,情況會變得更糟,但是我想要的圖書館需要一個圖書館。 – AndrewS

回答

51

使用lib命令。如果它是靜態的,lib會向你顯示一堆.obj文件。不是如果它是implib。

lib /list foo.lib 

會做到這一點。

另見:

http://msdn.microsoft.com/en-us/library/e17b885t(v=vs.80).aspx

+1

你可以建議使用'lib'來執行這個選項嗎?我無法理解它的文檔 – zaharpopov

+0

很好,非常感謝! – zaharpopov

+0

@zaharpopov自Windows 8.1發佈以來,MSDN文檔已經進行了修改。請檢查。 –

4

看其附帶的頭文件,如果函數是「裝飾」與__declspec(dllimport),它的導入庫。或者找一個附帶的.def文件,它也告訴你這是一個導入庫。