2012-02-12 87 views
6

我有一些.lib文件,但我沒有訪問.h頭文件。 這是否意味着.lib文件現在沒用了?沒有頭文件,.lib文件是無用的嗎?

如果沒有,我怎麼能再次使用它們?

我試圖用我的程序這條線,但它似乎並沒有被編譯到最後的可執行文件(用CFF Explorer的驗證)。

#pragma comment(lib, "SomeLibFile.lib") 

因此,鏈接.lib文件的唯一方法是通過使用其頭文件? 是否有任何工具可以爲.lib文件恢復頭文件?

+4

爲什麼你不去圖書館的下載頁面並重新下載標題? – Lefteris 2012-02-12 05:05:10

+0

我使用了一個工具來生成文件。它輸出到.dll和.lib等我使用.dll沒有問題,但我很好奇,爲什麼它產生一個沒有.h文件的.lib。 – user25101622 2012-02-12 05:08:38

+1

你如何使用該DLL?必須有一個標題,對吧?除非你在做.NET。你爲什麼這麼模糊?告訴我們該工具的名稱。 – 2012-02-12 05:20:09

回答

5

這取決於的.lib文件中的代碼是怎麼寫的。如果它是c api,這是extern關鍵字的用途。你可以找到某種程序來顯示函數的輸出。然後你可以在代碼中聲明它們爲extern。問題將是你的數據結構。

不管怎麼說,你沒有在技術上要有頭文件,你可以定義你自己的數據結構,並用extern關鍵字聲明的功能。

當你在你的編譯過程結束時運行你的連接你可以只鏈接的.lib。

+2

不要誤會我的意思,最好的方法是去找頭文件。 – 2012-02-12 05:15:29

2

您可以通過在鏈接器命令行上傳遞它來鏈接.lib文件,但不需要#pragma

當然,實際使用任何裏面需要知道調用約定,函數簽名,用戶定義類型的佈局,等等這一切通常是由一個頭文件提供,但也可以在文檔中找到。

在任何情況下,頭文件都不是編譯器生成的(很好,MIDL和CORBA確實使用機器生成的頭文件,但頭中的所有信息仍然是手動輸入.idl文件)。除非您的技術使用類型庫,否則所需的信息不會保存在DLL中。