面向?qū)ο缶幊?動(dòng)態(tài)連接庫(kù)和靜態(tài)連接庫(kù)有什么區(qū)別?
動(dòng)態(tài)連接庫(kù)和靜態(tài)連接庫(kù)有什么區(qū)別?1. 靜態(tài)鏈接庫(kù)是將(LIB)文件中使用的函數(shù)代碼直接鏈接到目標(biāo)程序,程序運(yùn)行時(shí)不需要其他庫(kù)文件。動(dòng)態(tài)鏈接是將調(diào)用函數(shù)的文件模塊(DLL)和調(diào)用函數(shù)在文件中的位置鏈接
動(dòng)態(tài)連接庫(kù)和靜態(tài)連接庫(kù)有什么區(qū)別?
1. 靜態(tài)鏈接庫(kù)是將(LIB)文件中使用的函數(shù)代碼直接鏈接到目標(biāo)程序,程序運(yùn)行時(shí)不需要其他庫(kù)文件。動(dòng)態(tài)鏈接是將調(diào)用函數(shù)的文件模塊(DLL)和調(diào)用函數(shù)在文件中的位置鏈接到目標(biāo)程序,然后在程序運(yùn)行時(shí)從DLL中查找相應(yīng)的函數(shù)代碼,這需要相應(yīng)的DLL文件的支持。三。靜態(tài)鏈接庫(kù)的優(yōu)點(diǎn)是:(1)代碼加載速度快,執(zhí)行速度略快于動(dòng)態(tài)鏈接庫(kù);(2)只需保證有正確的鏈接即可。Lib文件在開(kāi)發(fā)人員的計(jì)算機(jī)上,不需要考慮它的存在和版本。Lib文件在用戶計(jì)算機(jī)上以二進(jìn)制形式發(fā)布程序時(shí),可以避免DLL地獄等問(wèn)題。DLL的優(yōu)點(diǎn)是:(1)節(jié)省內(nèi)存,減少頁(yè)面交換;(2)DLL文件獨(dú)立于exe文件。只要輸出接口保持不變(即名稱、參數(shù)、返回值類型和調(diào)用約定保持不變),DLL文件的替換不會(huì)對(duì)exe文件產(chǎn)生任何影響,從而大大提高了可維護(hù)性和可擴(kuò)展性;(3) DLL文件具有節(jié)省內(nèi)存、減少頁(yè)面交換的優(yōu)點(diǎn),用不同編程語(yǔ)言編寫(xiě)的程序只要遵循函數(shù)調(diào)用約定,就可以調(diào)用同一個(gè)DLL函數(shù);(4)適合于大規(guī)模軟件開(kāi)發(fā),使開(kāi)發(fā)過(guò)程獨(dú)立,耦合性小促進(jìn)不同開(kāi)發(fā)人員和開(kāi)發(fā)組織之間的開(kāi)發(fā)和測(cè)試。
C 中動(dòng)態(tài)連接庫(kù)與靜態(tài)連接庫(kù)的區(qū)別?
靜態(tài)鏈接庫(kù)是中的一個(gè)文件。Lib格式。通常在項(xiàng)目的設(shè)置界面添加到項(xiàng)目中。編譯程序時(shí),Lib文件的代碼將添加到程序中,因此代碼大小將增加。程序一運(yùn)行,Lib代碼就被強(qiáng)制加載到程序的運(yùn)行空間中,不能手動(dòng)刪除。動(dòng)態(tài)鏈接庫(kù)是程序運(yùn)行時(shí)可以動(dòng)態(tài)加載到內(nèi)存中的模塊。格式為*。動(dòng)態(tài)鏈接庫(kù)。可以在程序運(yùn)行時(shí)隨意加載和刪除,以節(jié)省內(nèi)存空間。
在大型軟件項(xiàng)目中,需要實(shí)現(xiàn)許多功能。如果把所有的函數(shù)都寫(xiě)成lib文件,程序運(yùn)行時(shí)會(huì)占用大量?jī)?nèi)存空間,導(dǎo)致運(yùn)行緩慢。但是,如果將函數(shù)編寫(xiě)為DLL文件,則在使用函數(shù)時(shí)可以調(diào)用與函數(shù)對(duì)應(yīng)的DLL文件,而在不使用函數(shù)時(shí)可以刪除DLL文件,這樣可以節(jié)省內(nèi)存空間。
動(dòng)態(tài)鏈接庫(kù)和靜態(tài)鏈接庫(kù)的區(qū)別?
動(dòng)態(tài)鏈接只建立一個(gè)引用接口,真正的代碼和數(shù)據(jù)存儲(chǔ)在另一個(gè)可執(zhí)行模塊中,在運(yùn)行時(shí)加載,所有的代碼和數(shù)據(jù)都復(fù)制到這個(gè)模塊中,所以運(yùn)行時(shí)不再需要庫(kù)
動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)是一組函數(shù),為應(yīng)用程序調(diào)用打包在一起。區(qū)別在于:靜態(tài)庫(kù)的名稱一般是XXX。A、 它在編譯時(shí)與應(yīng)用程序相連接。這種應(yīng)用程序占用了更多的空間。動(dòng)態(tài)庫(kù)名稱通常是某某對(duì)于動(dòng)態(tài)庫(kù),可以在編譯時(shí)鏈接它們,或者使用dlopen()/dlsym()/dlclose()函數(shù)在運(yùn)行時(shí)調(diào)用它們。后者占用空間小,可以實(shí)現(xiàn)進(jìn)程間動(dòng)態(tài)庫(kù)的共享,只需在內(nèi)存中保留一個(gè)副本,降低了內(nèi)存開(kāi)銷。