靜態庫與DLL

2021-08-31 06:31:21 字數 545 閱讀 1035

靜態庫與dll的不同之處

可執行檔案的生成(link期):前者很慢(因為要將庫中的所有符號定義link到exe檔案中),而後者很快(因為後者被link的引入庫檔案無符號定義)

可執行檔案的大小:前者很大,後者很小(加上dll的大小就和前者差不多了)

可執行檔案的執行速度:前者快(直接在exe模組的記憶體中查詢符號),後者慢(需要在dll模組的記憶體中查詢,在另乙個模組的記憶體中查詢自然較慢)

可共享性:前者不可共享,也就是說如果兩個exe使用了同乙個靜態庫,那麼實際在記憶體中存在此庫的兩份拷貝,而後者是可共享的。

可公升級性:前者不可公升級(因為靜態庫符號已經編入exe中,要公升級則exe也需要重新編譯),後者可以公升級(只要介面不變,dll即可被公升級為不同的實現)

綜合以上,選擇靜態庫還是dll

1. 靜態庫適於穩定的**,而動態庫則適於經常更改**(當然介面要保持不變),當dll更改(僅實現部分)後,使用者不需要重編工程,只需要使用新的dll即可。

2. 由於靜態庫很吃可執行檔案的生成(link期)時間,所以如果對可執行檔案的link時間比較敏感,那麼就用dll。

動態鏈結庫(dll)與靜態連線庫(lib)

一 前言 dll dynamic 動態鏈結庫,包含多個程式執行的 和資料,程式執行時是需要使用dll lib static 靜態鏈結庫,包含dll中各函式的入口資訊,在程式編譯時用到 動態連線庫可以使設計者隱藏函式的具體實現,便噶增加 的復用性 動態鏈結庫參與的程式中,lib檔案和dll檔案都要用到...

靜態庫Lib和動態庫Dll

1.概論 1.什麼是靜態連線庫,什麼是動態鏈結庫 靜態鏈結庫與動態鏈結庫都是共享 的方式,如果採用靜態鏈結庫,則無論你願不願意,lib 中的指令都全部被直接包含在最終生成的 exe 檔案中了。但是若使用 dll,該 dll 不必被包含在最終 exe 檔案中,exe 檔案執行時可以 動態 地引用和解除...

靜態庫Lib和動態庫Dll

1.概論 1.什麼是靜態連線庫,什麼是動態鏈結庫 靜態鏈結庫與動態鏈結庫都是共享 的方式,如果採用靜態鏈結庫,則無論你願不願意,lib 中的指令都全部被直接包含在最終生成的 exe 檔案中了。但是若使用 dll,該 dll 不必被包含在最終 exe 檔案中,exe 檔案執行時可以 動態 地引用和解除...