iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
3
Software Development

闖入DLL的世界 DLL我要進來了哦系列 第 2

第二天:要了解DLL你要先講啊

  • 分享至 

  • xImage
  •  

大家好我是Andy,目前來到了第二天~我們今天簡單介紹一下靜態函式庫以及動態連結函式庫

DLL到底是啥玩意兒?

DLL的全名是動態連結函式庫(英文名字:Dynamic link library)(念法:帶餒米可 另可 賴ㄅwil)
所以縮寫才叫DLL,是由微軟公司在Windows系統下共享函式庫的方式,沒有錯啦就是不給Mac用
不過在網路上好像有看到大神在搞DLL檔案共享給Mac做使用,不過那都是大神的事情和我沒關係哈哈我都用冷水洗澡(菜)
但是在函式庫方面又分為靜態函式庫動態連結函式庫兩種:

  • 靜態函式庫

靜態連結函式庫簡單來說就是利用連結器在生成exe檔案的時候與其他檔案一起包一包讓使用者一併載下來,這樣一來不用怕使用者的電腦沒有需要使用的DLL而無法執行,但是有優點也有缺點這樣全部包一包生成出來的檔案會相當的大。
簡單來說呢靜態是以空間換取時間

  • 動態連結函式庫

動態連結函式庫解決了靜態連結函式庫的缺點,另一方面也解決了有些不需要調用函式庫占用記憶體的問題。
簡單來說動態是以時間換取空間(這不是廢話嗎)

優點

動態函式庫

  • 更加節省記憶體
  • dll和exe檔案獨立,只要名稱變數返回值型別和呼叫不變,dll拿掉也不會對exe造成傷害,這樣可以大大提高可維護性和可擴充零件性

舉例:現在很多的遊戲都變成這樣,只要exe內需要的函數不變就可以只修改dll內匯出的函數

  • 不同程式語言編寫的程式只要函式呼叫的方式一樣就可以用

舉例:windows系統裡面的動態連結函式庫

  • 因為不同程式語言編寫的程式都可以使用所以開發過程非常獨立,方便不同開發者和開發組織之間進行開發和測試

靜態函式庫

  • 因為都在同一個檔案內,所以需要甚麼直接拿執行速度比較快

缺點

動態函式庫

  • 在這DLL中最典型的缺點就是DLL地獄(DLL Hell),在早期的windows系統內並沒有對dll進行非常嚴謹的管理,所以可能造成安裝某些軟體後將原本系統級的DLL覆蓋掉了,這樣雖然可以讓安裝的軟體使用,但是在原本電腦舊的軟體都無法使用,進而造成系統崩潰。

靜態函式庫

  • 全部包軌,生成的體積非常大

結語

今天的東西初步了解動態函式庫和靜態函式庫的不同
因為就像把咩一樣在實作之前一定要先了解
因為就像把咩一樣在實作之前一定要先了解
因為就像把咩一樣在實作之前一定要先了解(很重要要說三遍)

之後也會在Visual Studio上面實作就會看見它們的不同,那我們明天見。


上一篇
第一天:DLL我要準備進來囉
下一篇
第三天:lib dll .h竟然有三角戀?
系列文
闖入DLL的世界 DLL我要進來了哦30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
albert20699
iT邦新手 4 級 ‧ 2023-03-10 10:30:22

NTUT的同學 簽到!!!
每天都一個梗圖也是很厲害XD
主要看梗圖,次要學習DLL

我要留言

立即登入留言