تبلیغات
تبلیغات

فایل DLL چیست و چه کاربردی دارد؟!

فایل DLL چیست و چه کاربردی دارد؟!

DLL (دی ال ال)، مخفف عبارت Dynamic Link Library و به معنی «کتابخانه پیوند پویا» است که ویکی پدیا آن را این چنین تعریف می‌کند:

یک فرمت استاندارد پیاده‌سازی شده توسط مایکروسافت از مفهوم کتابخانه‌های مشترک در سیستم عامل‌های مایکروسافت ویندوز و OS / 2 است. این کتابخانه‌ها معمولاً دارای فایل‌های DLL، OCX (برای کتابخانه‌های حاوی کنترل‌های اکتیو ایکس) یا DRV (برای رانندگان سیستم میراث) هستند. فرمت‌های فایل DLLها همانند فایل‌های ویندوز EXE است – یعنی قابل اجرا و قابل حمل (یا PE) برای ویندوزهای 32 بیتی و 64 بیتی و NE)New Executable) برای ویندوزهای 16 بیتی. همانند EXEها، DLLها می‌توانند شامل کد، داده ها و منابع در هر ترکیبی از آن‌ها باشند.


فایلهای داده با فرمت فایل DLL، اما با پسوندهای فایلی مختلف که احتمالاً هم فقط شامل بخش منابع باشند، می‌توانند منابع DLL نامیده شوند. نمونه‌هایی از چنین DLL شامل آیکون کتابخانه هاست که گاهی اوقات دارای پسوندICLو فایل‌های فونت، که دارای پسوندهای FON و FOT هستند، می‌شود.

اما طبیعتا اینگونه تعریف، برای یک کاربر عادی که هیچ، حتی برای یک برنامه‌نویس نیز پیچیده است! پس اجازه دهید آن را بهتر توضیح دهیم.

تعریف

طبیعتا این فایل‌های DLL را در پوشه‌های مختلف سیستم‌عامل ویندوز دیده‌اید؛ بخصوص در کنار برنامه‌هایی که نصب می‌کنید. برای مثال با نصب نرم افزار Notepad++ و سپس رفتن به مسیر نصب آن، فایل NppShell_06.dll و SciLexer.dll را در کنار notepad++.exe که فایل اجرایی برنامه است مشاهده می‌کنید. اما این دو فایل چه هستند؟! جالب آنکه اگر وارد پوشه‌ی plugins در مسیر نصب این نرم افزار شوید، داخل پوشه‌هایی که وجود دارند، فایل‌های DLL دیگری را نیز مشاهده می‌کنید!

DLL ها همانند فایل‌های EXE هستند! یعنی آنکه این فایل‌ها نیز قابل اجرا بوده و درون آنها کدی نوشته شده است؛ با این تفاوت که این فایل‌ها، در نقش پیچ و مهره بوده و بایستی توسط برنامه‌ای فراخوانی و اجرا شوند! یعنی چه؟!

عملیات راه رفتن را تصور کنید که این عملیات را به یک انسان نسبت می‌دهیم؛ حال آن انسان می‌تواند این عملیات را انجام دهد؛ اما عملیات دیگری را مثل چکش کاری تصور کنید که در آن انسان نیاز به چکش دارد؛ این چکش همان DLL است. بنابراین درک پوشه‌ی plugins در نرم افزار Notepad++ راحت‌تر خواهد شد که در آن افزونه‌ها را قرار داده و قابلیت‌های جدیدی را به برنامه اضافه می‌کنیم. در واقع، خود Notepad++ گفته است که در این‌جا برای من ابزارهای جدیدی را می‌توانید قرار دهید و من از آنها استفاده خواهم کرد و البته صددرصد این ابزارها بایستی متناسب با آن نرم افزار و در قالب آن نوشته شده باشند؛ چرا که یک گربه نمی‌تواند از چکش استفاده کرده و یا یک کتاب را بخواند.

صد در صد می‌توان آن عملیاتی که در یک فایل DLL وجود دارد را درون همان EXE پیاده کرد تا خود EXE که قابل اجرای مستقیم است، آن عملیات را انجام دهد؛ اما تصور کنید که چکش به دست یک انسان چسبیده است! در این صورت از آن چکش علاوه‌بر آنکه اشخاص دیگری نمی‌توانند استفاده کنند، خود انسان نیز سنگین‌تر و یا به عبارتی پیچیده‌تر خواهد شد. بعلاوه، اگر ابزارسازی مرسوم نباشد، اشخاص شخص ثالث نخواهند توانست تا مواردی را تولید کرده و در اختیار دیگران قرار دهند که از آن استفاده کنند. مثلا چکشی وجود نخواهد داشت.

فرض کنید نرم افزاری قصد پخش فایل صوتی دارد؛ طبیعتا پیاده کردن چنین قابلیتی پیچیده است؛ اما اشخاص دیگری قبلا آن را پیاده کرده و به شکل یک DLL در اختیار اشخاصی که می‌خواهند برنامه‌نویسی کنند قرار داده‌اند. خود ویندوز نیز صدها فایل DLL دارد که از هرکدام نیز می‌توان استفاده کرد.

و البته توجه داشته باشید که DLL مختص ویندوز بوده و برای سایر سیستم‌عامل‌ها نیز موارد و مفاهیم مختص خودشان تعریف می‌شوند.

چرا کتابخانه؟!

سوال این است که چرا در اسم این فرمت، از کتابخانه استفاده شده است؟!

یک کتابخانه از انبوهی کتاب تشکیل شده است که یک شخص می‌تواند از آنها استفاده کند. فایل DLL نیز بدین صورت است و یک فایل DLL از انبوه چیزهای مختلف می‌تواند ساخته شده باشد. مثلا علاوه‌بر چکش، سایر مواردی مثل انبر را هم در خود داشته باشد. بدین منظور در برنامه‌نویسی، به این موارد کتابخانه گفته می‌شود و طبیعتا این یک اسم است که از گذشته بر اینگونه چیزها نهاده شده است و می‌توانست اسم دیگری نیز باشد. شاید چون این مفهوم نیز همانند یک کتابخانه از پرونده‌های مختلفی تشکیل شده است که بصورت متن یا در واقع همان کد می‌باشند، این نام را به آن اختصاص دادند.


تعریف خلاصه
DLL، یک فرمت کتابخانه برنامه‌نویسی برای سیستم‌عامل ویندوز است.
کانال تلگرام فول کده

تبلیغات

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک‌گذاری اطلاعات در هر زمینه‌ای
برنامه‌نویس فول استک

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده بدون دیدگاه