
📣前言
- 在之前的文章有介紹過
so檔案,那本篇文章就來介紹一些DLL檔案吧! - 提起
DLL檔案,大家肯定不會陌生,就算自己沒撰寫生成過DLL檔案,那也一定見過! Windows系統打開電腦C盤的System檔案夾,往下一拉就會發現有超級多的帶有.dll后綴的檔案!- 那
DLL檔案到底是個怎樣的存在呢?本篇文章就來好好研究一下這個DLL檔案究竟是個啥!
👑DLL檔案概念
先來看一段話:
DLL是Dynamic Link Library的縮寫,意為元件,
DLL檔案一般被存放在C:WindowsSystem目錄下,在Windows中,許多應用程式并不是一個完整的可執行檔案,它們被分割成一些相對獨立的元件,即DLL檔案,放置于系統中,
當我們執行某一個程式時,相應的DLL檔案就會被呼叫,一個應用程式可有多個DLL檔案,一個DLL檔案也可能被幾個應用程式所共用,這樣的DLL檔案被稱為共享DLL檔案,
那看到這可能有小伙伴就會疑惑了,元件咋這么眼熟呢,之前介紹so檔案的時候也是說的元件!
確實,DLL檔案 也稱作 元件,那他倆到底有啥區別呢?親,這邊建議百度百科看一下呢(百度也搜不出啥道道來~)
我在查找了一些資料后發現,so 和 dll 都被稱作 元件 沒錯,甚至在Unity中呼叫他倆的方式都可以是一樣的!
我理解的他倆區別可能是:DLL檔案是Windows系統下常用的!so檔案實際是偏向于Linux系統較多!
具體更詳細的區別可能就偏多與底層了,在這里也不做過多的介紹了,接著往下說DLL檔案!
比如我在自己電腦的C盤檔案夾下就可以看到好多的DLL檔案
基本上可以這么說,Windows系統是離不開DLL檔案的!

DLL和EXE檔案一樣,其中包含的也是程式的二進制執行代碼和程式所需的資源(比如圖示、對話框、字串等)
DLL中的代碼是以API函式`形式出現的,通俗地說,DLL中包含的程式代碼都被做成了一個個小模塊,應用程式通過按下所需DLL中特定的按鈕,來呼叫DLL中這個按鈕所代表的功能
在查閱資料時看到有篇文章是這樣說的:
- Windows中有3個非常重要的底層DLL:Kernel32.dll、User32.dll、GDI32.dll,
- 其中Kernel32.dll顧名思義就是內核相關的功能,主要包含用于管理記憶體、行程和執行緒的函式;
- 而User32.dll中包含的則是用于執行用戶界面任務的函式,比如把用戶的滑鼠點擊操作傳遞給視窗,以便視窗根據用戶的點擊來執行預定的事件;
- GDI32.dll的名稱用了縮寫,全稱是Graphical Device Interface(圖形設備介面),包含用于畫圖和顯示文本的函式,比如要顯示一個程式視窗,就呼叫了其中的函式來畫這個視窗,
這樣來看的話Windows和DLL檔案確實關系密切的很,在底層代碼上都有互動呢!
🎪為什么要用DLL?
那么我們為什么要用DLL檔案呢?
前面說到DLL檔案就是一個個小模塊的代碼,其中存放的是各類程式的函式(子程序)實作程序,當程式需要呼叫函式時需要先載入DLL,然后取得函式的地址,最后進行呼叫,
使用DLL檔案的好處是程式不需要在運行之初加載所有代碼,只有在程式需要某個函式的時候才從DLL中取出,另外,使用DLL檔案還可以減小程式的體積,
根據自己的整理和網上查閱的資料簡單整理了一下使用DLL檔案的優點,一起來看一下吧
可以更好地擴展應用程式
由于DLL能被應用程式動態載入記憶體,所以,應用程式可以在需要時才將DLL載入到記憶體中,這讓程式的可維護性變得很高,
比如我們在修改應用程式的某一塊功能時,可以只針對這塊功能對應的DLL檔案中的內容,而不必全域修改代碼便于不同領域的程式員之間合作
目前可以用的編程工具有很多,比如VB、VC、Delphi等,如果好幾個人合作來撰寫一個大的程式,那么可能有的人用VB,有的人用VC,每人負責的部分所使用的編程語言都不同,究竟放在哪個編譯器中進行編譯呢?
這就好比一群來自各個國家的人在共同撰寫一篇文章,如果他們所使用的語言都不同,寫出來的文章怎么可能湊到一起呢?而有了DLL后,可以讓VC程式員寫一個DLL,然后VB程式員在程式中呼叫,無需為怎么將它們都編譯為一個單獨的EXE而發愁了,節省記憶體
如果多個應用程式呼叫的是同一個元件,那么這個DLL檔案不會被重復多次裝入記憶體中,而是由這些應用程式共享同一個已載入記憶體的DLL,大概意思就是可以將一些通用的模塊功能封裝起來,這樣大家都可以呼叫,而避免性能的浪費!更好的解決應用程式本地化問題
在下載了某個程式的漢化包后,打開漢化說明,經常可以看到用下載包中的DLL檔案覆寫掉程式原來的DLL,漢化就完成了,
這些程式都是將執行代碼和應用程式界面分開撰寫了,所以漢化者只需簡單地將其中和程式界面相關的DLL漢化并發布即可,
💬總結
關于DLL檔案的底層并沒有介紹很深,因為博主對這方面的認知也不是很深刻,還是有自知之明的!
介紹一些關于DLL的大概知識,方便我們以后使用Unity的程序中遇到DLL檔案時可以有個一知半解
那本篇文章對于DLL檔案的介紹就到這里了,后面會寫文章介紹怎樣生成一個DLL檔案和在Unity中呼叫DLL檔案的使用!
🚀往期優質文章分享
- ??Unity零基礎到入門 | 游戲引擎 Unity 從0到1的 系統學習 路線【全面總結-建議收藏】!
- 🧡花一天時間做一個高質量飛機大戰游戲,過萬字Unity完整教程!漂亮學妹看了直呼666!
- 💛回憶童年和小伙伴一起玩過的經典游戲【炸彈人小游戲】制作程序+決議
- 💚通宵一晚做出來的一款類似CS的第一人稱射擊游戲Demo!原來做游戲也不是很難
- 🤍爆肝整整一個周末寫一款類似 皇室戰爭 的 即時戰斗類 游戲Demo!兩萬多字游戲制作程序+決議!
- 💙一款類似“恐龍快打”的 橫版街機格斗游戲 該如何制作?| 一起來學習 順便送原始碼【碼文不易,建議收藏學習】
- 💜【超實用技巧】| 提高寫文的質量 和 速率必學技能: Typora 圖床配置 詳細說明
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296681.html
標籤:其他
