DLL در مقابل LIB
کتابخانه مجموعه ای از منابع است که می تواند برای توسعه برنامه های کاربردی استفاده شود. یک کتابخانه معمولاً از زیر روال ها، توابع، کلاس ها، مقادیر و انواع تشکیل شده است. در طول فرآیند پیوند (معمولاً توسط یک پیوند دهنده انجام می شود)، کتابخانه ها و فایل های اجرایی به یکدیگر ارجاع می دهند. فایل های کتابخانه بسته به زمانی که زیرروال ها در برنامه مورد نظر بارگذاری می شوند به کتابخانه های ایستا و پویا تقسیم می شوند. بر این اساس، فایلهای LIB کتابخانههایی با پیوند استاتیک و فایلهای DLL کتابخانههایی با پیوند پویا هستند.
DLL چیست؟
کتابخانه پیوند پویا (که بیشتر با نام DLL شناخته می شود) یک پیاده سازی کتابخانه مشترک است که توسط مایکروسافت توسعه یافته است.این برنامه از پسوندهای.dll، ocx. یا.drv استفاده می کند و در سیستم عامل های Microsoft Windows و OS/2 استفاده می شود..dll توسط فایل های DLL معمولی استفاده می شود. و پسوند ocx. توسط کتابخانههایی که شامل کنترلهای ActiveX هستند و پسوند.drv توسط فایلهای درایور سیستم قدیمی استفاده میشود. فرمت فایل DLL همانند فایلهای EXE ویندوز است (فایلهای اجرایی قابل حمل در ویندوز 32 بیتی/64 بیتی و اجرایی جدید در ویندوز 16 بیتی). بنابراین، هر ترکیبی از کد، داده و منابع را می توان در فایل های DLL (درست مانند فایل های EXE) قرار داد. در واقع، فایل های داده با فرمت فایل DLL، DLL منبع نامیده می شوند. کتابخانههای نماد (با پسوند.icl) و فایلهای فونت (با پسوندهای.fon و.fot) نمونههایی از DLL منابع هستند.
مؤلفههایی به نام بخشها یک DLL را تشکیل میدهند و هر بخش دارای ویژگیهای خاص خود مانند خواندنی/نوشتنی و اجرایی/غیر اجرایی است. بخش های کد قابل اجرا هستند، در حالی که بخش های داده غیر قابل اجرا هستند. بخش های کد به اشتراک گذاشته شده و بخش های داده خصوصی هستند.این بدان معناست که تمام فرآیندهایی که از DLL استفاده می کنند از همان کپی کد استفاده می کنند، در حالی که هر فرآیند دارای کپی مخصوص به خود از داده ها است. کتابخانه پویا اولیه برای ویندوز kernel32.dll است که شامل توابع پایه (عملکردهای مربوط به فایل و حافظه) در ویندوز است. COM (Component Object Model) پسوند DLL به OOP (برنامه نویسی شی گرا) است. استفاده از DLL های معمولی راحت تر از فایل های COM است.
LIB چیست؟
فایل های LIB کتابخانه های ایستا هستند (همچنین به عنوان کتابخانه های پیوندی استاتیک شناخته می شوند). فایل های LIB حاوی مجموعه ای از زیر روال ها، توابع خارجی و متغیرها هستند. فایل های LIB در زمان کامپایل حل می شوند (بر خلاف زمان اجرا). کد در واقع در برنامه هدف کپی می شود. یک کامپایلر، پیوند دهنده یا یک بایندر این وضوح را انجام می دهد و یک فایل شی و یک فایل اجرایی تولید می کند. این فرآیند فرآیند ساخت استاتیک نامیده می شود.
تفاوت بین DLL و LIB چیست؟
کتابخانه های LIB را می توان در طول زمان کامپایل فراخوانی کرد، اما کتابخانه های DLL را فقط در طول زمان اجرا می توان فراخوانی کرد.فایل های LIB به طور قابل توجهی بزرگتر از فایل های DLL هستند. یک مشکل بسیار رایج در فایل های DLL، مشکل نسخه سازی است. این زمانی اتفاق می افتد که کد DLL تغییر می کند و برنامه از نسخه اشتباه یک DLL استفاده می کند. این مشکل مربوط به فایل های LIB نیست. از نظر قابلیت استفاده مجدد، هنگام نوشتن نسخه های جدید سیستم ها یا برنامه های کاملاً جدید، DLL ها همیشه بهتر از LIB ها هستند.