DLL hell

מתוך המכלול, האנציקלופדיה היהודית
קפיצה לניווט קפיצה לחיפוש

הביטוי DLL hell בלשון מדוברת, משמש לתיאור סיבוכים שנובעים משימוש בספריית קישור-דינמי (DLL) במערכות הפעלה חלונות של מיקרוסופט. למרות שהביטוי DLL hell ייחודי לחלונות, לעיתים משתמשים בו במקום הביטוי הכללי יותר Dependency hell, כנראה בגלל החריזה.

הסיבוך יכול לבוא לידי ביטוי בהודעות שמופיעות כאשר מנסים להפעיל תוכנה במחשב. לדוגמה: "A Required DLL File, xxxx, was not found" או "The procedure entry point xxxx couldn't be located in xxxx.DLL". לעיתים לא תופענה הודעות, אבל היישום יפעל באופן לא תקין.

תקלות DLL נפוצות

תקלות DLL hell מופיעות בדרך כלל לאחר התקנה או הסרה של תוכנות ממערכת ההפעלה. התקלות יכולות לנבוע מקונפליקט בין גרסאות של DLL, קושי למצוא את קובצי ה-DLL המתאימים, וריבוי עותקים של קובצי DLL.

גרסאות לא תואמות

גרסה מסוימת של ספריית קישור-דינמי יכולה להיות תואמת לתוכנית אחת ולא תואמת לתוכנית אחרת. מערכות ההפעלה חלונות פגיעות במיוחד לאי תאימות גרסאות בגלל הדגש על קישור דינמי בשפת C++‎ ואובייקטים של OLE. מחלקות בשפת C++‎ מייצאות שיטות רבות, ולכן שינוי יחיד במחלקה יכול לפגוע בתאימות עם תוכניות שנבנו מול גרסאות מוקדמות יותר. לדוגמה, תיקון "באג" בתוכנה אחת יכול להסיר מאפיין של תוכנה אחרת.

עד לגרסה XP, מערכת ההפעלה חלונות הייתה פגיעה לתקלות כאלה מכיוון שטבלת ה-COM הייתה משותפת לכל המשתמשים ולכל התהליכים. כלומר, אם תוכנית רצתה ליצור עותק של המחלקה היא נאלצה להשתמש ביישום הנוכחי של אותה מחלקה. כתוצאה מכך, אם תוכנה חדשה התקינה אובייקט COM חדש היא יכלה בלי כוונה לפגוע בתוכנות אחרות.