dll Lib obj h檔案的區別與作用

2021-07-26 19:04:46 字數 1147 閱讀 5883

**

obj:

目標檔案,一般是程式編譯後的二進位制檔案,通過鏈結器和資源檔案鏈結後就成為exe檔案(鏈結器將使用這些檔案生成exe檔案)。

obj只給出了程式的相對位址,而exe是絕對位址。  

cpp對應的二進位制**格式,是未經重定位的!

lib:是若干個obj的集合,本質與obj相同!  

lib有靜態lib和動態lib之分。

靜態lib將匯出宣告和實現都放在lib中。編譯後所有**都嵌入到宿主程式.

動態lib相當於乙個h檔案,是對實現部分(.dll檔案)的匯出部分的宣告。編譯後只是將匯出宣告部分編譯到宿主程式中,執行時候需要相          應的dll檔案支援.

lib檔案是不對外公開的,不能檢視乙個編譯過後的檔案

靜態庫(lib)的呼叫需要標頭檔案(#include ".h")和新增庫檔案(.lib),新增庫檔案可以利用開發環境新增,也可以**新增:#pragma                comment(lib,"lib"

程式設計中,新增lib檔案的常用辦法有二個: 

1、把*.lib放在vc的lib目錄中 

2、修改project setting的link->input中的addtional library path,加入你的目錄

dll:是可實際執行的二進位制**,有定位**的!  

dll 是乙個包含可由多個程式同時使用的**和資料的庫,dll不是可執行檔案。動態鏈結提供了一種方法,使程序可以呼叫不屬於其可執        行**的函式。函式的可執行**位於乙個 dll 中,該 dll 包含乙個或多個已被編譯、鏈結並與使用它們的程序分開儲存的函式。dll          還有助於共享資料和資源。多個應用程式可同時訪問記憶體中單個dll 副本的內容。

dll內的函式分為兩種:(1)dll匯出函式,可**用程式呼叫;

(2)dll內部函式,只能在dll程式使用,應用程式無法呼叫它們

要匯出 dll 函式,您可以嚮導出的 dll 函式中新增函式關鍵字,也可以建立模組定義檔案 (.def) 以列出匯出的 dll 函式。

h:  是標頭檔案,也可算是源**,因為當cpp中用#include時,會把包含的檔案的內容在cpp中擴充套件開!

h檔案是用來編寫函式(類,變數型別)原型宣告的,通常dll、lib和obj的使用需要有h檔案的配合,以獲得二進位制**的原型宣告!

標頭檔案 的區別

是純c的。就像一樣是一些常用函式的宣告定義標頭檔案。是為了c 中的,但是不是很純,簡單地把封裝了一下改頭換面就變成c 的了,算是乙個過渡型的。其實cstring的內容是 namespace std 所以說其實cstring很坑爹。但是畢竟是乙個進化,與string.h的進步體現在宣告名稱都位於std...

BIN HEX,ELF,AXF檔案的區別

2.hex intel hex 檔案常用來儲存微控制器或其他處理器的目標程式 它儲存物理程式儲存區中的目標 映象。一般的程式設計器都支援這種格式。就是機器 的十六進製制形式,並且是用一定檔案格式的ascii碼來表示。hex檔案由記錄 record 組成。在hex檔案裡面,每一行代表乙個記錄。每條記錄...

標頭檔案和庫檔案的區別

標頭檔案中有函式的申明,庫檔案實現函式的定義。比如,printf函式。使用時應包括stdio.h,開啟stdio.h你只能看到,printf這 個函式的申明,卻看不到printf具體是怎麼實現的,而函式的實現在相應的c庫 中。而庫檔案一般是以二進位制形式而不是c原始檔形式提供給使用者使用的。程式 中...