1 靜態(tài)鏈接庫(kù)的優(yōu)點(diǎn)
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、競(jìng)秀網(wǎng)站維護(hù)、網(wǎng)站推廣。
(1) 代碼裝載速度快,執(zhí)行速度略比動(dòng)態(tài)鏈接庫(kù)快;
(2) 只需保證在開(kāi)發(fā)者的計(jì)算機(jī)中有正確的.LIB文件,在以二進(jìn)制形式發(fā)布程序時(shí)不需考慮在用戶(hù)的計(jì)算機(jī)上.LIB文件是否存在及版本問(wèn)題,可避免DLL地獄等問(wèn)題。
2 動(dòng)態(tài)鏈接庫(kù)的優(yōu)點(diǎn)
(1) 更加節(jié)省內(nèi)存并減少頁(yè)面交換;
(2) DLL文件與EXE文件獨(dú)立,只要輸出接口不變(即名稱(chēng)、參數(shù)、返回值類(lèi)型和調(diào)用約定不變),更換DLL文件不會(huì)對(duì)EXE文件造成任何影響,因而極大地提高了可維護(hù)性和可擴(kuò)展性;
(3) 不同編程語(yǔ)言編寫(xiě)的程序只要按照函數(shù)調(diào)用約定就可以調(diào)用同一個(gè)DLL函數(shù);
(4)適用于大規(guī)模的軟件開(kāi)發(fā),使開(kāi)發(fā)過(guò)程獨(dú)立、耦合度小,便于不同開(kāi)發(fā)者和開(kāi)發(fā)組織之間進(jìn)行開(kāi)發(fā)和測(cè)試。
3 不足之處
(1) 使用靜態(tài)鏈接生成的可執(zhí)行文件體積較大,包含相同的公共代碼,造成浪費(fèi);
(2) 使用動(dòng)態(tài)鏈接庫(kù)的應(yīng)用程序不是自完備的,它依賴(lài)的DLL模塊也要存在,如果使用載入時(shí)動(dòng)態(tài)鏈接,程序啟動(dòng)時(shí)發(fā)現(xiàn)DLL不存在,系統(tǒng)將終止程序并給出錯(cuò)誤信息。而使用運(yùn)行時(shí)動(dòng)態(tài)鏈接,系統(tǒng)不會(huì)終止,但由于DLL中的導(dǎo)出函數(shù)不可用,程序會(huì)加載失?。凰俣缺褥o態(tài)鏈接慢。當(dāng)某個(gè)模塊更新后,如果新模塊與舊的模塊不兼容,那么那些需要該模塊才能運(yùn)行的軟件,統(tǒng)統(tǒng)撕掉。這在早期Windows中很常見(jiàn)。
還有一點(diǎn)區(qū)別:
靜態(tài)庫(kù)在程序編譯時(shí)會(huì)被連接到目標(biāo)代碼中,程序運(yùn)行時(shí)將不再需要該靜態(tài)庫(kù)。
動(dòng)態(tài)庫(kù)在程序編譯時(shí)并不會(huì)被連接到目標(biāo)代碼中,而是在程序運(yùn)行是才被載入,因此在程序運(yùn)行時(shí)還需要?jiǎng)討B(tài)庫(kù)存在。
靜態(tài)庫(kù)是指編譯鏈接時(shí),把庫(kù)文件的代碼全部
加載到可執(zhí)行文件中,因此生成的文件比較大,但在運(yùn)行時(shí)也就不再需要庫(kù)文件了。其后
綴名一般為“.a” 。 動(dòng)態(tài)庫(kù)與之相反,在編譯鏈接時(shí)并沒(méi)有把庫(kù)文件的代碼加載到可執(zhí)行
文件中,而是在程序執(zhí)行時(shí)由運(yùn)行時(shí)鏈接文件加載庫(kù),這樣可以節(jié)省系統(tǒng)的開(kāi)銷(xiāo)。