**
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原始檔形式提供給使用者使用的。程式 中...