Dynamic-Link Library – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
CalBaker (שיחה | תרומות)
אין תקציר עריכה
מ ליבא -> לייבא, ליצא -> לייצא (דרך WP:JWB)
שורה 21:
בתהליך של קישור דינמי, מרוכזות כל ה[[פונקציה (תכנות)|פונקציות]] הנמצאות בקובצי DLL חיצוניים לתוך [[מערך (מבנה נתונים)|טבלה]] שכל ה[[מצביע]]ים שלה ריקים. במהלך טעינת התוכנית על ידי ה[[מקשר דינמי|מקשר הדינמי]] של [[חלונות]] (PE Loader), מתבצעת טעינה של קובצי ה-DLL הרלוונטיים ל[[זיכרון גישה אקראית|זיכרון הפיזי]] (אם אחד מקובצי ה-DLL אשר התוכנה תלויה בהם לא קיים במערכת, התוכנה לא תיטען כלל). לרוב קובצי DLL לא עוברים ל[[זיכרון וירטואלי|זיכרון הווירטואלי]], אלא נשארים בזיכרון הפיזי עד שכל התוכניות שזקוקות להם מסיימות את פעולתן.
 
לאחר שכל קובצי ה-DLL הרלוונטיים נטענו לזיכרון, מתבצע מיפוי כתובות של הפונקציות ועדכון של כל המצביעים בטבלת היבוא. פעולת המיפוי נעזרת בטבלאות ייצוא, שמתאימות מספר הסידורי לכל אחת מהפונקציות בקובץ ה-DLL. בדרך כלל, עדיף ליבאלייבא פונקציות באמצעות שמן, שכן בגרסאות השונות של מערכת ההפעלה חלונות הסדר של הפונקציות בקובצי ה-DLL יכול להשתנות. החל ממערכות 32 ביט של חלונות טבלאות היצוא מסודרות לפי שם, ולכן ניתן לאתר את הפונקציות ב[[חיפוש בינארי]] שה[[תקורה]] שלו לא גבוהה במיוחד.
 
=== טעינה מושהית (Delay load) ===