靜態庫與DLL

maqianmaqian發表於2011-03-10

靜態庫與DLL的不同之處

可執行檔案的生成(Link期):前者很慢(因為要將庫中的所有符號定義Link到EXE檔案中),而後者很快(因為後者被Link的引入庫檔案無符號定義)
可執行檔案的大小:前者很大,後者很小(加上DLL的大小就和前者差不多了)
可執行檔案的執行速度:前者快(直接在EXE模組的記憶體中查詢符號),後者慢(需要在DLL模組的記憶體中查詢,在另一個模組的記憶體中查詢自然較慢)
可共享性:前者不可共享,也就是說如果兩個EXE使用了同一個靜態庫,那麼實際在記憶體中存在此庫的兩份拷貝,而後者是可共享的。
可升級性:前者不可升級(因為靜態庫符號已經編入EXE中,要升級則EXE也需要重新編譯),後者可以升級(只要介面不變,DLL即可被升級為不同的實現)
 
綜合以上,選擇靜態庫還是DLL
1. 靜態庫適於穩定的程式碼,而動態庫則適於經常更改程式碼(當然介面要保持不變),當DLL更改(僅實現部分)後,使用者不需要重編工程,只需要使用新的Dll即可。
2. 由於靜態庫很吃可執行檔案的生成(Link期)時間,所以如果對可執行檔案的Link時間比較敏感,那麼就用DLL。


本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/hjsunj/archive/2008/01/16/2047376.aspx

相關文章