C 各種檔案的作用

2021-10-23 02:49:23 字數 1033 閱讀 9663

.h標頭檔案是編譯時必須的,lib是鏈結時需要的,dll是執行時需要的。

附加依賴項的是.lib不是.dll。

若生成了dll,則肯定也生成 lib檔案。

如果要完成源**的編譯和鏈結,有標頭檔案和lib就夠了。如果要使動態連線的程式執行起來,有dll就夠了(放在debug資料夾裡)。在開發和除錯階段,當然最好都有。

.h .lib .dll三者的關係是:

.**件:宣告函式介面

.dll檔案:函式可執行**

解釋說明:當我們在自己的程式中引用了乙個**件裡的函式,鏈結器怎麼知道該呼叫哪個dll檔案呢?這就是lib檔案的作用: 告訴鏈結器呼叫的函式在哪個dll中,函式執行**在dll中的什麼位置,這也就是為什麼需要附加依賴項 .lib檔案,它起到橋梁的作用。

如果生成靜態庫檔案,則沒有dll ,只有lib,這時函式可執行**部分也在lib檔案中

參考:exp檔案就是匯出檔案(export file)。使用linker去建立dll(中間還有它的匯出庫),我們假設我們生成兩個dll(or just executables)。但是他們都需要呼叫一些對方中函式,問題出現了。當我們生成a.dll的時候我們需要b.lib;但是b.lib在對應的b.dll生成之前沒有生成,而b.dll的生成又需要a.lib。正因如此,微軟的解決辦法是使用exp檔案,或者叫匯出檔案。在生成兩個dll之前,你使用lib.exe(library mangager tool庫管理工具)來建立乙個.lib和.exp,即,dll a 的a.lib 和a.exp,現在linker使用a.lib和dll b 自己的東西去生成b.dll和b.lib。當你回來鏈結dll a的時候你就有了b.lib。這裡linker需要知道a.dll中需要匯出處啥。這些資訊都被快取到了a.exp檔案中。linker不需要def檔案或者/export選項,它僅僅是載入a.exp中的資訊。a.exp就像a.dll的兩個生成過程(lib.exe and linker)的聯絡者一樣。相似的,linker不會再次生成a.lib。總的來說,這種迴圈呼叫的情況不會和在我們的程式**現,因此,希望你不會再你的程式中用到exp檔案。

總結:exp檔案是兩個之間的聯絡者

各種檔案原理及作用

bak檔案 有些程式在編輯文件存檔前,先把編輯前的檔案儲存,副檔名是bak backup備份 後再儲存編輯後的檔案,這樣當你存檔後後悔了,可以用bak檔案覆蓋原檔案來恢復。這樣就產生了bak檔案。相當於檔案備份 bat檔案 bat檔案是dos下的批處理檔案。批處理檔案是無格式的文字檔案,它包含一條或...

VC 中的各種檔案的作用

摘要 關於vc 中的各種檔案的作用的深入研究。dsw 全稱是developer studio workspace,最高端別的配置檔案,記錄了整個工作空間的配置資訊,她是乙個純文字的檔案,在vc建立新專案的時候自動生成 2 dsp 全稱是developer studio project,也是乙個配置檔...

VC 生成的各種檔案的作用

dsw 全稱是developer studio workspace,最高端別的配置檔案,記錄了整個工作空間的配置資訊,她是乙個純文字的檔案,在vc建立新專案的時候自動生成 2dsp 全稱是developer studio project,也是乙個配置檔案,不過她記錄的是乙個專案的所 有配置資訊,純文...