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 חדש היא יכלה בלי כוונה לפגוע בתוכנות אחרות.