dll、Lib、obj、.h檔案的區別與作用
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//tlib.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檔案的配合,以獲得二進位制程式碼的原型宣告!
轉自http://blog.csdn.net/beryl_song/article/details/5556319
相關文章
- dll和so檔案區別與構成
- .dll,.lib,.def 和 .exp檔案
- C#專案obj和bin檔案什麼區別和聯絡C#OBJ
- OBJ模型檔案的結構、匯入與渲染OBJ模型
- fbx和obj格式的區別OBJ
- Flink發行包中 lib 目錄下的檔案作用
- 文字檔案與二進位制檔案的區別
- 標準IO與檔案IO 的區別
- PHP7 ?? 與 ?: 的作用和區別PHP
- 關於重定向符>>與>的區別與作用
- Linux中檔案與目錄的區別Linux
- async與defer的作用與區別以及阻塞優化優化
- .ora檔案、.dbf檔案和.dat檔案的區別
- STDIN_FILENO的作用及與stdin 的區別
- 嵌入式工程師,你知道.c檔案和.h的區別嗎?工程師
- fcntl.h與unistd.h標頭檔案
- VC6.0 設定動態連結庫工程生成dll以及lib檔案的位置
- 使用jar與zip壓縮解壓檔案的區別JAR
- 3D中的OBJ檔案格式詳解3DOBJ
- COM和DLL和activex 的區別
- 批處理檔案(bat檔案)註冊dll批量註冊dllBAT
- python - PyOpenGL 如何匯入 obj 檔案?PythonOBJ
- 全方位解讀DLL檔案—編寫DLL
- dll檔案是什麼 dll檔案用什麼軟體開啟
- DLL檔案中Form的使用 (轉)ORM
- dll檔案刪除不了
- 加速檔案傳輸:檔案和UDP之間的區別UDP
- win10怎麼刪除dll檔案_win10dll檔案刪除的方法Win10
- 表空間離線與資料檔案離線的區別
- C系列語言中.c&&.h檔案內容的區分
- c# get_type與typeof方法的區別與聯絡和作用C#
- 《Node.js》path.resolve與path.join的區別與作用Node.js
- java中呼叫dll檔案的步驟Java
- JAVA呼叫C語言下的DLL檔案JavaC語言
- 原碼、反碼、補碼及移碼的作用與區別
- gitee 專案與倉庫的區別Gitee
- dll的def檔案與__declspec(dllexport)匯出函式方式比較Export函式
- ROR中h()方法和sanitize的區別