靜態庫與DLL
靜態庫與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
相關文章
- 封裝動態庫dll與靜態庫lib(原理及簡單例項)封裝單例
- 靜態庫與動態庫
- iOS 靜態庫 與私有庫iOS
- VS下生成與配置靜態庫與動態庫(一)
- 動態連結庫與靜態連結庫
- 菜鳥教程——iOS動態庫與靜態庫iOS
- linux下的靜態庫與動態庫Linux
- ios靜態庫與動態庫的區別iOS
- C靜態庫的建立與使用--為什麼要引入靜態庫?
- Dll堆疊問題(Dll的靜態變數與全域性變數、vs的MT與MD)變數
- C++靜態庫與動態庫深入研究C++
- Linux 依賴動態庫 / 靜態庫的動態態庫 / 靜態庫Linux
- Android:JNI與NDK(二)交叉編譯與動態庫,靜態庫Android編譯
- 靜態變數與靜態方法變數
- DLL動態庫動態載入
- 動態連結庫(DLL)
- iOS 靜態庫詳解與開發iOS
- ios 開發中 動態庫 與靜態庫的區別iOS
- 靜態庫生成
- 動靜態庫
- ios靜態庫和動態庫iOS
- JavaScript 靜態屬性與靜態方法JavaScript
- net 靜態方法與非靜態方法
- Linux 動態庫與靜態庫製作及使用詳解Linux
- linux靜態庫的生成與使用(轉)Linux
- cmake:生成靜態庫和動態庫
- Android NDK祕籍--編譯靜態庫、呼叫靜態庫Android編譯
- .net呼叫靜態庫
- 【連結 1】與靜態連結庫連結
- 動態庫和靜態庫的區別
- Win32動態連結庫與靜態連結庫的區別Win32
- iOS靜態庫SDK製作(包含第三方靜態庫)iOS
- Linux共享庫、靜態庫、動態庫詳解Linux
- iOS的Framework靜態庫iOSFramework
- iOS 靜態庫開發iOS
- 靜態庫破解方法――skinmagic
- 靜態資源公共庫
- iOS動態庫和靜態庫的運用iOS