ما الفرق بين .lib و .h و dll في c++ ?


ملفات h. عادةََ ما تحتوي على تعاريف المواد المستخدمة في ملفات c. أو cpp. ، و هي الملفات التي تستعملها في الجملة

" include "anExample.h#

ملفات lib. تؤدي نفس الغرض، و حسب خبرتي ملفات h. و cpp. مستعملة أكثر،

المشكلة في هذه الملفات أنها لابد أن تتضمن مع برنامجك عند التصدير باستعمال linker ، فإذا كانت المكتبة التي تستعملها كبيرة أو ثقيلة الحجم فسينعكس هذا سلباً على برنامجك، كما أن هناك مشكلة في عدم توافر مصدر كود الكثير من المكاتب ( ملفات .h , cpp.) خاصة إن كانت غير مفتوحة المصدر.

لحل هذه المشاكل جاءت فكرة المكاتب الديناميكية Dynamic Libraries (على عكس ملفات lib. cpp. h. و التي تسمى Static Libraries) . هذه المكاتب عبارة عن ملفات مجمعة (compiled files) مثلها مثل .exe ، تقوم بتحميلها على جهاز المستخدم (مثلاً توزيعة .net) و يقوم برنامجك بالارتباط بها و استعمالها من دون إعادة تحميلها وقت التجميع،

المشكلة في مثل هذه الملفات، أنك كمبرمج لاتستطيع ضمان أن جهاز المستخدم يحتوي على المكاتب المناسبة لبرنامجك، مثال مشهور جداً هي توزيعة ال net. و التي لابد أن تحميلها من مايكروسوفت قبل تحميل عدة برامج مثل Matlab أو Photoshop، و المشكلة الأخرى أنها تعتمد بشكل مباشر على نظام التشغيل، فهذه الملفات تلحق ب dll. في نظام ويندوز، بينما أنظمة لينكس تعتمد على التسمية الملحقة بـ so.

1) لا يمكنك استعمال ملفات exe و dll بشكل مباشر على اللينكس، لابد من ترجمة لهذه الملفات بطريقة أو بأخرى ( ليس لي خبرة بهذا الموضوع لكن بحث سريع على جوجل يؤكد أن المشكلة لها حلول مختلفة)

2) عندما تقوم بتجميع البرنامج و استصداره فأنت تقوم بتحويل كل ملفات h , lib , cpp إلى ملف واحد مشفر (bin files) و بهذا تقوم بإخفاء كل السورس كود ببرنامجك،

3) لا، خاصية هذه الملفات (static libraries) أنها تتجمع في مرحلة (linkage) إلى ملف واحد مشفر (bin file) يحتوي على الملفات المجمعة ، وبهذا يكون تحميل الملف الناتج .exe كاف

يوجد برنامج اسمه واين (Wine)يتم تثبيته على لينكس يسمع باستعمال ملفات exe و dll شخصيا لا افضل استعماله.

افضل برامج لينكس 100% (.deb ...)


برمجة

مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.

24.9 ألف متابع