DLL vs LIB
ბიბლიოთეკა არის რესურსების კოლექცია, რომელიც შეიძლება გამოყენებულ იქნას აპლიკაციების შესაქმნელად. ბიბლიოთეკა ჩვეულებრივ შედგება ქვეპროგრამებისგან, ფუნქციებისგან, კლასებისგან, მნიშვნელობებისა და ტიპებისგან. დაკავშირების პროცესის დროს (ჩვეულებრივ კეთდება ლინკერის მიერ), ბიბლიოთეკები და შესრულებადი ფაილები ერთმანეთს მიმართავენ. ბიბლიოთეკის ფაილები იყოფა სტატიკურ და დინამიურ ბიბლიოთეკებად, იმის მიხედვით, თუ რა დროს იტვირთება ქვეპროგრამები სამიზნე აპლიკაციაში. შესაბამისად, LIB ფაილები არის სტატიკურად დაკავშირებული ბიბლიოთეკები და DLL ფაილები დინამიურად დაკავშირებული ბიბლიოთეკები.
რა არის DLL?
Dynamic Link Library (უფრო საყოველთაოდ ცნობილი როგორც DLL) არის Microsoft-ის მიერ შემუშავებული საერთო ბიბლიოთეკის იმპლემენტაცია.ის იყენებს.dll,.ocx ან.drv გაფართოებებს და ისინი გამოიყენება Microsoft Windows და OS/2 ოპერაციულ სისტემებში..dll გამოიყენება ჩვეულებრივი DLL ფაილებით. და.ocx გაფართოება გამოიყენება ბიბლიოთეკების მიერ, რომლებიც შეიცავს ActiveX კონტროლს და.drv გაფართოება გამოიყენება ძველი სისტემის დრაივერის ფაილებით. DLL ფაილის ფორმატი იგივეა, რაც Windows EXE ფაილები (პორტატული შესრულებადი ფაილები 32-ბიტიან/64-ბიტიან Windows-ზე და New Executable 16-ბიტიან Windows-ზე). ამიტომ, კოდის, მონაცემთა და რესურსების ნებისმიერი კომბინაცია შეიძლება შეიცავდეს DLL ფაილებში (ისევე, როგორც EXE ფაილებში). ფაქტიურად, მონაცემთა ფაილებს DLL ფაილის ფორმატით ეწოდება რესურსების DLL. ხატულათა ბიბლიოთეკები (.icl გაფართოებით) და შრიფტის ფაილები (.fon და.fot გაფართოებებით) რესურსების DLL-ების მაგალითებია.
კომპონენტები, რომლებსაც სექციები ეწოდება, ქმნიან DLL-ს და თითოეულ განყოფილებას აქვს საკუთარი ატრიბუტები, როგორიცაა მხოლოდ წაკითხვადი/ჩასაწერი და შესრულებადი/არა შესრულებადი. კოდის სექციები შესრულებადია, ხოლო მონაცემთა სექციები არა შესრულებადი. კოდის სექციები გაზიარებულია და მონაცემთა სექციები პირადია.ეს ნიშნავს, რომ ყველა პროცესი, რომელიც იყენებს DLL-ს, გამოიყენებს კოდის ერთსა და იმავე ასლს, ხოლო თითოეულ პროცესს ექნება მონაცემთა საკუთარი ასლი. Windows-ისთვის პირველადი დინამიური ბიბლიოთეკა არის kernel32.dll, რომელიც შეიცავს Windows-ის საბაზისო ფუნქციებს (ფაილი და მეხსიერებასთან დაკავშირებული ფუნქციები). COM (კომპონენტური ობიექტის მოდელი) არის DLL-ის გაფართოება OOP-ზე (ობიექტზე ორიენტირებული პროგრამირება). ჩვეულებრივი DLL უფრო ადვილი გამოსაყენებელია, ვიდრე COM ფაილები.
რა არის LIB?
LIB ფაილები სტატიკური ბიბლიოთეკებია (ასევე ცნობილია, როგორც სტატიკურად დაკავშირებული ბიბლიოთეკები). LIB ფაილები შეიცავს ქვეპროგრამების, გარე ფუნქციების და ცვლადების კრებულს. LIB ფაილები წყდება კომპილაციის დროს (გაშვების დროისგან განსხვავებით). კოდი რეალურად კოპირებულია სამიზნე აპლიკაციაში. შემდგენელი, ლინკერი ან ბაინდერი გააკეთებს ამ რეზოლუციას და აწარმოებს ობიექტის ფაილს და შესრულებად ფაილს. ამ პროცესს ეწოდება სტატიკური მშენებლობის პროცესი.
რა განსხვავებაა DLL-სა და LIB-ს შორის?
LIB ბიბლიოთეკების გამოძახება შესაძლებელია კომპილაციის დროს, მაგრამ DLL ბიბლიოთეკების გამოძახება შესაძლებელია მხოლოდ გაშვების დროს. LIB ფაილები მნიშვნელოვნად აღემატება DLL ფაილებს. DLL ფაილების ძალიან გავრცელებული პრობლემაა ვერსიების პრობლემა. ეს ხდება მაშინ, როდესაც DLL კოდი იცვლება და აპლიკაცია იყენებს DLL-ის არასწორ ვერსიას. ეს არ არის LIB ფაილებთან დაკავშირებული პრობლემა. ხელახლა გამოყენების თვალსაზრისით, სისტემების ახალი ვერსიების ან სრულიად ახალი აპლიკაციების წერისას, DLL-ები ყოველთვის უკეთესია ვიდრე LIB.