資源描述:
《c靜態(tài)庫與動態(tài)庫的區(qū)別》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、c++靜態(tài)庫與動態(tài)庫的區(qū)別分類:?C++2012-11-2611:41?3621人閱讀?評論(1)?收藏?舉報如果對Linux下靜態(tài)鏈接庫和動態(tài)鏈接庫感興趣,請狂點擊-->你懂的一,概念???????1)靜態(tài)鏈接庫就是你使用的.lib文件,庫中得代碼最后需要連接到你的可執(zhí)行文件中去,所以靜態(tài)連接的可執(zhí)行文件一般比較大一些?! ??????使用方法 ????????????????????1>?格式如:#pragmacomment(lib,"XXX.lib") ????????????????????2>?針對開發(fā)環(huán)境: ??????
2、????????????????????????????1、如果使用VC,可以在ProjectSetting-->Link中加入你的靜態(tài)庫,也可以直接把該.lib文件加入到你的工程中?????????????????????????????????? 2、如果使用VisualStudio,位置在項目→配置屬性→連接器→輸入→附加依賴項中加入.lib文件 ??????構(gòu)造方法???????????????????????????在靜態(tài)庫情況下,函數(shù)和數(shù)據(jù)被編譯進一個二進制文件(通常擴展名為*.lib),VisualC++的編譯器在鏈接
3、過程中將從靜態(tài)庫中恢復(fù)這些函數(shù)和數(shù)據(jù)并把他們和應(yīng)用程序中的其他模塊組合在一起生成可執(zhí)行文件。這個過程稱為"靜態(tài)鏈接",此時因為應(yīng)用程序所需的全部內(nèi)容都是從庫中復(fù)制了出來,所以靜態(tài)庫本身并不需要與可執(zhí)行文件一起發(fā)行。???????????????編程使用:使用lib需注意兩個文件:??????????????????????(1).h頭文件,包含lib中說明輸出的類或符號原型或數(shù)據(jù)結(jié)構(gòu)。應(yīng)用程序調(diào)用lib時,需要將該文件包含入應(yīng)用程序的源文件中。??????????????????????(2).lib文件,見上面。????????2)Dyna
4、micLinkLibrary的縮寫形式,DLL是一個包含可由多個程序同時使用的代碼和數(shù)據(jù)的庫,DLL不是可執(zhí)行文件。動態(tài)鏈接提供了一種方法,使進程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。函數(shù)的可執(zhí)行代碼位于一個DLL中,該DLL包含一個或多個已被編譯、鏈接并與使用它們的進程分開存儲的函數(shù)。DLL還有助于共享數(shù)據(jù)和資源。多個應(yīng)用程序可同時訪問內(nèi)存中單個DLL副本的內(nèi)容。DLL是一個包含可由多個程序同時使用的代碼和數(shù)據(jù)的庫。??????????????DLL舉例??????????????????????????????ActiveX控件(.ocx)文
5、件:示例是日歷控件,它使您可以從日歷中選擇日期?!?????????????????????????????控制面板(.cpl)文件:cpl文件的一個示例是位于控制面板中的項。每個項都是一個專用DLL?! ????????????????????設(shè)備驅(qū)動(.drv)文件???????????????編程使用;??????????????????????????使用dll需注意三個文件:????????????????????????????????????(1).h頭文件,包含dll中說明輸出的類或符號原型或數(shù)據(jù)結(jié)構(gòu)的.h文件。應(yīng)用程序調(diào)用
6、dll時,需要將該文件包含入應(yīng)用程序的源文件中。????????????????????????????????????(2).LIB文件,是dll在編譯、鏈接成功之后生成的文件,作用是當其他應(yīng)用程序調(diào)用dll時,需要將該文件引入應(yīng)用程序,否則產(chǎn)生錯誤。如果不想用lib文件或者沒有l(wèi)ib文件,可以用WIN32API函數(shù)LoadLibrary、GetProcAddress裝載。???????????????????????????????????(3).dll文件,真正的可執(zhí)行文件,開發(fā)成功后的應(yīng)用程序在發(fā)布時,只需要有.exe文件和.dll文
7、件,并不需要.lib文件和.h頭文件。二,初步認識??????????????共有兩種庫:????????????????????????????一種是lib包含了函數(shù)所在的DLL文件和文件中函數(shù)位置的信息(入口),代碼由運行時加載在進程空間中的DLL提供,稱為動態(tài)鏈接庫dynamiclinklibrary。????????????????????????????一種是lib包含函數(shù)代碼本身,在編譯時直接將代碼加入程序當中,稱為靜態(tài)鏈接庫staticlinklibrary。?????????????共有兩種鏈接方式:?????????????
8、??????????????動態(tài)鏈接使用動態(tài)鏈接庫,允許可執(zhí)行模塊(.dll文件或.exe文件)僅包含在運行時定位DLL函數(shù)的可執(zhí)行代碼所需的信息。????????