DLL與LIB
庫是可用於開發應用程序的資源集合。庫通常由子程序、函數、類、值和類型組成。在鏈接過程中(通常由鏈接器完成),庫和可執行文件相互引用。根據子程序加載到目標應用程序的時間,庫文件分為靜態庫和動態庫。因此,LIB文件是靜態鏈接庫,DLL文件是動態鏈接庫。
什麼是DLL?
動態鏈接庫(通常稱為DLL)是由Microsoft開發的共享庫實現。它使用.dll、.ocx或.drv擴展名,它們在Microsoft Windows和OS/2操作系統中使用。dll由常規dll文件使用。ocx擴展名由包含ActiveX控件的庫使用,.drv擴展名由舊系統驅動程序文件使用。DLL文件格式與Windows EXE文件相同(32位/64位Windows上的可移植可執行文件,16位Windows上的新可執行文件)。因此,任何代碼、數據和資源的組合都可以包含在DLL文件中(就像在EXE文件中一樣)。實際上,具有DLL文件格式的數據文件稱為資源DLL。圖標庫(擴展名為.icl)和字體文件(擴展名為.fon和.fot)是資源DLL的示例。
稱為secti***的組件組成一個DLL,每個節都有自己的屬性,比如只讀/可寫和可執行/不可執行。代碼段是可執行的,而數據段是不可執行的。代碼部分是共享的,數據部分是私有的。這意味著使用DLL的所有進程將使用相同的代碼副本,而每個進程都將有自己的數據副本。Windows的主要動態庫是kernel32.dll,它包含Windows上的基本函數(與文件和內存相關的功能)。COM(Component Object Model)是DLL對OOP(面向對象編程)的擴展。傳統的DLL比COM文件更容易使用。
什麼是LIB?
LIB文件是靜態庫(也稱為靜態鏈接庫)。LIB文件包含子例程、外部函數和變量的集合。LIB文件在編譯時解析(與運行時相反)。實際上是複製到應用程序中的目標代碼。編譯器、鏈接器或綁定器將執行此解析並生成一個目標文件和一個可執行文件。此過程稱為靜態構建過程。
DLL和LIB有什麼區別?