فایل DLL چیست؟
فایل DLL یا Dynamic Link Library نوعی فایل اجرایی است. این یکی از رایج ترین فایل های پسوندی است که در دستگاه شما یافت می شود و معمولاً در پوشه System32 در ویندوز شما ذخیره می شود. فایل پسوند DLL توسط مایکروسافت توسعه داده شده است و به طور گسترده توسط آنها استفاده می شود. از محبوبیت بالایی برخوردار است. DLL به عنوان یک قفسه کار می کند که حاوی drivers/procedures/functions/properties است که برای یک برنامه/برنامه توسط سرور ویندوز طراحی و اعمال می شود. یک فایل DLL نیز می تواند در بین برنامه های مختلف ویندوز به اشتراک گذاشته شود. این فایلهای پسوندی برای اجرای روان برنامههای ویندوز در دستگاه شما حیاتی هستند، زیرا مسئول فعال کردن و اجرای عملکردهای مختلف برنامه مانند نوشتن و خواندن فایلها، اتصال با سایر دستگاههایی هستند که خارج از تنظیمات شما هستند. با این حال، این فایلها را فقط میتوان در دستگاهی باز کرد که از هر نسخهای از ویندوز (ویندوز 7/ویندوز 10/و غیره) پشتیبانی میکند و از این رو نمیتوان مستقیماً روی دستگاهی که از سیستمعامل مک پشتیبانی میکند باز کرد. (اگر می خواهید یک فایل DLL را در Mac OS باز کنید، برنامه های خارجی مختلف می توانند به باز کردن آنها کمک کنند.)
فرمت فایل DLL
فایل DLL توسط مایکروسافت توسعه یافته است و دارای پسوند .dll است که نشان دهنده نوع است. این بخشی جدایی ناپذیر از سرور ویندوز 1.0 و فراتر از آن بوده است. این یک نوع فایل باینری است و توسط تمامی نسخه های ویندوز مایکروسافت پشتیبانی می شود. این نوع فایل بهعنوان وسیلهای برای ایجاد یک سیستم کتابخانه مشترک در برنامههای ویندوز ایجاد شد تا امکان ویرایش یا تغییرات جداگانه و مستقل در کتابخانههای برنامه بدون نیاز به پیوند مجدد برنامهها را فراهم کند.
مثال DLL
کد نمونه برای نقطه ورودی DLL را می توان در زیر یافت:
BOOL APIENTRY DllMain(
HANDLE hModule,// Handle to DLL module
DWORD ul_reason_for_call,// Reason for calling function
LPVOID lpReserved ) // Reserved
{
switch ( ul_reason_for_call )
{
case DLL_PROCESS_ATTACHED: // A process is loading the DLL.
break;
case DLL_THREAD_ATTACHED: // A process is creating a new thread.
break;
case DLL_THREAD_DETACH: // A thread exits normally.
break;
case DLL_PROCESS_DETACH: // A process unloads the DLL.
break;
}
return TRUE;
}