ส่วนใหญ่เรารู้จัก DLL files เมื่อซอฟต์แวร์ทำงานไม่ได้เพราะขาดไฟล์ .dll บางตัว หลังจาก prompt นี้ เราไปออนไลน์หา DLL นั้น ใส่ในโฟลเดอร์ที่ถูกต้อง ซอฟต์แวร์ก็ทำงาน แค่นี้ — case closed เรื่อง DLL files
แต่ควรเข้าใจเพิ่มเติมเกี่ยวกับไฟล์เหล่านี้ พวกมันดูสำคัญ เพราะการขาดหายไปสามารถหยุดซอฟต์แวร์ไม่ให้รันได้ แล้วมันคืออะไร? ทำงานยังไง? มาหาคำตอบ
DLL Files คืออะไร?
เกือบทุกคนเคยจัดการกับ DLL files บางครั้ง เมื่อซอฟต์แว่งใหม่ไม่ทำงานเพราะขาดไฟล์เหล่านี้
DLL = Dynamic-Link Library เป็นการ implement shared library concept ของ Microsoft ใน Windows และ OS/2 ไฟล์เหล่านี้เป็น เหมือน EXEs แต่ตั้งชื่อต่างกันเพื่อความชัดเจนใน linking process DLL files ไม่สามารถรันโดยตรงได้ จึงมี tools เช่น rundll.exe และ rundll32.exe
DLL files คือ วิธีให้นักพัฒนาใช้ shared code และ data อัปเกรด functionality ได้โดยไม่ต้อง re-link หรือ re-compile applications กล่าวคือ DLL files ประกอบด้วย code และ data ที่ใช้ร่วมกันหลาย applications ไฟล์ DLL เดียว ใช้ได้หลาย applications หากต้องการ กำจัดความจำเป็นต้องมี multiple copies ของข้อมูลเดียวกัน
DLL files ทำงานอย่างไร?
จินตนาการ 2 ไฟล์: example.exe (executable ทั่วไป) และ library.dll (DLL ที่ executable ใช้) OS เชื่อมไฟล์ทั้งสองยังไงตอน example.exe รัน?
example.exeรัน → OS โหลด และหาตารางข้อมูลภายใน บอกว่า "โปรแกรมนี้ใช้ functions ต่อไปนี้จาก DLL file library.dll" → เรียกว่า imports หรือ imported functions จาก DLL "library.dll" ในโปรแกรม "example.exe"- Loader code ค้นหา
library.dllหาเจอ → โหลดไฟล์ ภายใน DLL มี list อีกอัน ชื่อ export list เชื่อม address เฉพาะให้แต่ละ function ใน DLL ตั้งแต่จุดนี้example.exeต้องการเรียก function จากlibrary.dll→ ใช้ address นั้น
การหาและเก็บ DLL files
เมื่อซอฟต์แวร์ขาด DLL file วิธีปกติ: ค้นหาไฟล์ออนไลน์ เก็บในฮาร์ดดิสก์ จะทำงานหากวาง DLL ในโฟลเดอร์ซอฟต์แวร์ แต่เหมือนที่อธิบาย ซอฟต์แวร์หลายตัวอาจต้องการไฟล์นั้น ดีกว่าคือเก็บไว้ที่ทุกตัวเข้าถึงได้ — คือโฟลเดอร์ System32 (C:\Windows\System32) ผู้ใช้ x64 ควรก็อปปี้ไป C:\Windows\SysWOW64 ด้วย (ทั้งคู่ต้องใช้สิทธิ์ Administrator)
อย่างไรก็ตาม วิธีนี้ไม่ได้รับแนะนำจากทุกคน เพราะอาจมีความเสี่ยง: DLL เก่า, virus infection ฯลฯ จากประสบการณ์ส่วนตัว ผมไม่เคยมีปัญหากับ DLL files (มักโหลดจากเว็บนี้ แต้องเลือก Download Zip File เพื่อหลีกเลี่ยง third-party software) ทุกอย่างขึ้นอยู่กับความชอบส่วนตัว
คุณรู้ข้อมูลนี้เกี่ยวกับ DLL files ไหม? มีอะไรสำคัญขาดหายไปจากบทความนี้? บอกเราในคอมเมนต์!