lib有靜態lib和動態lib之分。
在windows上,lib的字尾為lib,在linux上,靜態lib的字尾為a和動態lib字尾為so。
(1)lib是編譯時需要的,dll是執行時需要的。
如果要完成源**的編譯,有lib就夠了。
如果也使動態連線的程式執行起來,有dll就夠了。
在開發和除錯階段,當然最好都有。
(2)一般的動態庫程式有lib檔案和dll檔案。lib檔案是必須在編譯期就連線到應用程式中的,而dll檔案是執行期才會被呼叫的。如果有dll檔案,那麼對應的lib檔案一般是一些索引資訊,具體的實現在dll檔案中。如果只有lib檔案,那麼這個lib檔案是靜態編譯出來的,索引和實現都在其中。靜態編譯的lib檔案有好處:給使用者安裝時就不需要再掛動態庫了。但也有缺點,就是導致應用程式比較大,而且失去了動態庫的靈活性,在版本公升級時,同時要發布新的應用程式才行。
(3)在動態庫的情況下,有兩個檔案,乙個是引入庫(.lib)檔案,乙個是dll檔案,引入庫檔案包含被dll匯出的函式的名稱和位置,dll包含實際的函式和資料,應用程式使用lib檔案鏈結到所需要使用的dll檔案,庫中的函式和資料並不複製到可執行檔案中,因此在應用程式的可執行檔案中,存放的不是被呼叫的函式**,而是dll中所要呼叫的函式的記憶體位址,這樣當乙個或多個應用程式執行是再把程式**和被呼叫的函式**鏈結起來,從而節省了記憶體資源。從上面的說明可以看出,dll和.lib檔案必須隨應用程式一起發行,否則應用程式將會產生錯誤。
儲存 檔案摘記
問題 unix 下檢視某裝置或socket被誰使用的命令 解答 fuser 問題 unix 誤刪檔案怎麼恢復 解答 使用工具 extundelete 操作參考 問題 調整儲存分割槽 inode 數量的方法 解答 inode 的調整需要重新格式化磁碟,請確保資料已經得到有效備份後再進行下述操作。思路是...
OSGi學習摘記
最近在學習osgi框架,這篇部落格就當做學習筆記吧。及時更新。osgi是基於不同classloader載入不同的資源模組,而以前的開源框架,例如 hibernate spring sturts等都是基於統一管理和唯一的classloader來設計開發。所以osgi在整合其他框架時需要做特殊處理。im...
Lua學習摘記
lua的物件導向實現很有趣,lua的基本資料型別有8個 nil number string boolean function table userdata thread 其中的table就是實現物件導向的重中之重 lua對table的一些機制設計十分巧妙,只需要熟悉這些機制 用簡潔的 就能實現物件導...