سؤال

كيف بالضبط ملفات DLL العمل ؟ يبدو أن هناك الكثير منهم, ولكن أنا لا أعرف ما هي أو كيف تعمل.

إذا ما هو التعامل معهم ؟

هل كانت مفيدة؟

المحلول

ما هو DLL?

مكتبات الارتباط الحيوي (DLL)s مثل السابقين ولكنها ليست مباشرة للتنفيذ.فهي مشابهة .حتى الملفات في لينكس/يونكس.وهذا هو القول ، DLLs MS تنفيذ المكتبات المشتركة.

دلس كثيرا مثل EXE أن تنسيق الملف نفسه هو نفسه.سواء EXE و Dll على أساس Portable Executable (PE) file format.Dll يمكن أن تحتوي أيضا على مكونات COM،.صافي المكتبات.

ماذا DLL تحتوي ؟

DLL يحتوي على وظائف, فصول, المتغيرات, UIs والموارد (مثل الرموز, الصور, الملفات،...) أن EXE أو DLL يستخدم.

أنواع المكتبات:

تقريبا على جميع أنظمة التشغيل, هناك 2 أنواع من المكتبات.ثابت المكتبات المكتبات الديناميكية.في ويندوز امتداد الملف كما يلي:مكتبات ثابتة (.ليب) و المكتبات الديناميكية (.dll).والفرق الرئيسي هو أن مكتبات ثابتة مرتبطة قابل للتنفيذ في تجميع الوقت ؛ في حين ديناميكية مرتبطة المكتبات لا ترتبط حتى وقت التشغيل.

أكثر على والدينامية المكتبات:

كنت عادة لا نرى مكتبات ثابتة على الرغم من على جهاز الكمبيوتر الخاص بك ، لأنه ثابت المكتبة جزءا لا يتجزأ مباشرة داخل وحدة (EXE أو DLL).مكتبة ديناميكية هو ملف مستقل.

DLL يمكن أن تتغير في أي وقت ويتم تحميل فقط في وقت التشغيل عند EXE صراحة تحميل DLL.مكتبة ثابتة لا يمكن تغييرها مرة واحدة يتم تجميعها داخل EXE.DLL يمكن تحديثها بشكل فردي دون تحديث EXE نفسها.

تحميل DLL:

برنامج تحميل DLL عند بدء التشغيل ، عبر Win32 API LoadLibrary ، أو عندما يتم الاعتماد آخر DLL.برنامج يستخدم GetProcAddress لتحميل وظيفة أو إيثرنت تحميل الموارد.

مزيد من القراءة:

يرجى التحقق MSDN أو ويكيبيديا لمزيد من القراءة.أيضا مصادر هذا الجواب.

نصائح أخرى

ما هو DLL?

ملفات DLL هي ملفات ثنائية يمكن أن تحتوي على التعليمات البرمجية القابلة للتنفيذ والموارد اللازمة مثل الصور ، إلخ.على عكس تطبيقات هذه لا يمكن تنفيذها مباشرة ، ولكن التطبيق سيتم تحميل لهم عند الاقتضاء (أو في كل مرة أثناء بدء التشغيل).

هل هي مهمة ؟

معظم التطبيقات سيتم تحميل ملفات DLL فهي تتطلب عند بدء التشغيل.إذا كان أي من هذه لم يتم العثور على النظام لن يكون قادرا على البدء في عملية على الإطلاق.

ملفات DLL قد تتطلب ملفات DLL

في بنفس الطريقة التي يتطلب تطبيق ملف DLL, DLL ملف يمكن أن تعتمد على ملفات DLL نفسها.إذا كان واحد من هذه ملفات DLL في سلسلة من التبعية لم يتم العثور على التطبيق سوف لا تحميل.هذا هو تصحيحه بسهولة باستخدام أي التبعية ووكر أدوات مثل التبعية ووكر.

هناك الكثير منهم في مجلدات النظام

معظم وظائف النظام يتعرض مستخدم البرنامج في شكل ملفات DLL كما هي معيار شكل من أشكال تقاسم رمز / الموارد.كل وظيفة يتم الاحتفاظ بها بشكل منفصل في مختلف ملفات DLL و ملفات DLL المطلوبة سيتم تحميلها وبالتالي تقليل الذاكرة القيود على النظام.

التطبيقات المثبتة أيضا استخدام ملفات DLL

ملفات DLL أيضا يصبح شكل فصل وظائف جسديا كما هو موضح أعلاه.تطبيقات جيدة أيضا محاولة عدم تحميل ملفات DLL حتى يتم المطلوب تماما ، مما يقلل من متطلبات الذاكرة.وهذا أيضا يسبب التطبيقات إلى السفينة مع الكثير من ملفات DLL.

DLL الجحيم

ومع ذلك ، في بعض الأحيان نظام الترقيات في كثير من الأحيان فواصل البرامج الأخرى عندما يكون هناك عدم تطابق إصدار المشترك بين ملفات DLL و البرنامج الذي يتطلب منهم.نظام التفتيش DLL cache, الخ.كانت المبادرات من M$ لحل هذه المشكلة.على .صافي منصة قد لا تواجه هذه المشكلة على الإطلاق.

كيف نعرف ما هو داخل ملف DLL?

لديك لاستخدام أداة خارجية مثل DUMPBIN أو التبعية ووكر التي لن تظهر فقط ما يظهر علنا الوظائف المعروفة باسم (الصادرات) الموجودة داخل ملفات DLL و أيضا ما هي ملفات DLL اللازمة التي تصدر من تلك ملفات DLL هذا ملف DLL مرهون.

كيف يمكننا إنشاء / استخدام لهم ؟

إحالة وثائق البرمجة من المورد الخاص بك.C++, الرجوع إلى LoadLibrary في MSDN.

دعونا نقول كنت ترغب بجعل قابل للتنفيذ أن يستخدم بعض الوظائف الموجودة في المكتبة.

إذا كانت المكتبة تستخدمه ثابت, رابط نسخ رمز الكائن على هذه الوظائف مباشرة من المكتبة و إدراجها في الملف القابل للتنفيذ.

الآن إذا كان هذا هو قابل للتنفيذ تشغيله لديه كل شيء يحتاجه ، لذلك القابل للتنفيذ محمل فقط بتحميله إلى الذاكرة و يعمل عليه.

إذا كانت المكتبة ديناميكية رابط لن أدخل رمز الكائن بل سيتم إدراج كعب الذي يقول ببساطة هذه هي وظيفة تقع في هذا DLL في هذا الموقع.

الآن إذا كان هذا قابل للتنفيذ تشغيل بت من الملف القابل للتنفيذ في عداد المفقودين (أنا.هـ بذرة) لذا محمل يذهب من خلال تنفيذ إصلاح مفقود بذرة.فقط بعد كل بذرة قد تم حلها سوف القابل للتنفيذ يسمح لتشغيل.

أن ترى في هذا العمل أو حذف أو إعادة تسمية DLL و مشاهدة كيف محمل تقرير مفقود DLL الخطأ عند محاولة تشغيل الملف القابل للتنفيذ.

ومن هنا جاء اسم مكتبة الارتباط الحيوي, وأجزاء من عملية الربط يتم بشكل حيوي في وقت التشغيل من قبل الملف القابل للتنفيذ محمل.

واحدة ملاحظة أخيرة, إذا كنت لا تصل إلى DLL ثم لا بذرة سيتم إدراج رابط, ولكن ويندوز لا يزال يوفر GetProcAddress API التي تسمح لك لتحميل تنفيذ دالة DLL نقطة الدخول بعد فترة طويلة للتنفيذ قد بدأ.

DLLs (مكتبات الارتباط الحيوي) و SLs (المكتبات المشتركة ، أي ما يعادل تحت UNIX) هي مجرد المكتبات من التعليمات البرمجية القابلة للتنفيذ التي يمكن أن تكون مرتبطة بشكل حيوي قابل للتنفيذ في وقت التحميل.

مكتبات ثابتة يتم إدراجها في ملف قابل للتنفيذ في وقت الترجمة و هي ثابتة من تلك النقطة.أنها تزيد من حجم الملف القابل للتنفيذ ولا يمكن أن تكون مشتركة.

المكتبات الديناميكية لها المزايا التالية:

1/ يتم تحميلها في وقت التشغيل بدلا من تجميع الوقت بحيث يمكن تحديثها بشكل مستقل القابل للتنفيذ (كل تلك يتوهم النوافذ ومربعات الحوار ترى في ويندوز تأتي من دلس حيث الشكل والمظهر من التطبيق الخاص بك يمكن تغيير دون الحاجة إلى إعادة كتابتها).

2/ لأنهم المستقلة ، رمز يمكن أن تكون مشتركة عبر العديد من الملفات التنفيذية - وهذا يحفظ الذاكرة منذ ذلك الحين ، إذا كنت تعمل 100 تطبيقات مع واحد DLL قد يكون هناك واحد فقط نسخ DLL في الذاكرة.

العيب الرئيسي هو الاستفادة #1 - وجود ملفات Dll تغيير المستقلة التطبيق الخاص بك قد يسبب التطبيق الخاص بك إلى التوقف عن العمل أو بدء يتصرف بطريقة غريبة الطريقة.DLL الإصدار لا تميل إلى أن تدار بشكل جيد جدا تحت ويندوز و هذا يؤدي إلى طريف اسمه "DLL الجحيم".

ملفات DLL تحتوي على تصدير الجدول والتي هي قائمة من الرموز التي يمكن أن ينظر من خلال برنامج الاستدعاء.الرموز عادة الوظائف مع ج الدعوة الاتفاقية (__stcall).تصدير الجدول يحتوي أيضا على عنوان الدالة.

مع هذه المعلومات, برنامج الاستدعاء ثم استدعاء الدالات في DLL على الرغم من أنه لم يكن لديك الوصول إلى DLL في وقت الترجمة.

إدخال مكتبات الارتباط الحيوي بعض مزيد من المعلومات.

http://support.microsoft.com/kb/815065

DLL هي المكتبة التي تحتوي على رمز والبيانات التي يمكن استخدامها من قبل أكثر من برنامج واحد في نفس الوقت.بالنسبة سبيل المثال ، في أنظمة التشغيل ويندوز ، على Comdlg32 DLL يقوم المشترك مربع الحوار وظائف ذات الصلة.لا يمكن استخدام الوظائف الواردة في هذا DLL لتنفيذ مفتوح الحوار مربع.هذا يساعد على تعزيز إعادة استخدام التعليمات البرمجية ، كفاءة استخدام الذاكرة.

باستخدام DLL برنامج يمكن مجزأ إلى مكونات منفصلة.على سبيل المثال ، برنامج المحاسبة قد يتم بيعها من قبل الوحدة.كل وحدة يمكن تحميلها في البرنامج الرئيسي في تشغيل الوقت إذا أن الوحدة هي مثبتة.لأن وحدات منفصلة ، وقت تحميل البرنامج بشكل أسرع ، و وحدة تحميلها فقط عندما الوظيفة المطلوبة.

بالإضافة إلى ذلك, تحديثات أسهل تنطبق على كل وحدة دون التأثير على أجزاء أخرى من البرنامج.بالنسبة على سبيل المثال, قد يكون لديك الرواتب برنامج معدلات الضرائب تغيير كل العام.عند هذه التغييرات هي معزولة ، إلى DLL ، يمكنك تطبيق تحديث دون الحاجة إلى بناء أو تثبيت البرنامج كله مرة أخرى.

http://en.wikipedia.org/wiki/Dynamic-link_library

DLL هو امتداد الملف & المعروفة باسم "مكتبة الارتباط الحيوي" تنسيق ملف يستخدم لعقد عدة رموز وإجراءات برامج ويندوز.البرامج والألعاب يعمل على أسس DLL الملفات ؛ ملفات DLL تم إنشاء العديد من التطبيقات يمكن استخدام المعلومات الخاصة بهم في نفس الوقت.

إذا كنت ترغب في الحصول على مزيد من المعلومات حول ملفات DLL أو تواجه أي خطأ قراءة المشاركة التالية.https://www.bouncegeek.com/fix-dll-errors-windows-586985/

DLLs (مكتبات الارتباط الحيوي) تحتوي على الموارد المستخدمة من قبل واحد أو أكثر من التطبيقات أو الخدمات.أنها يمكن أن تحتوي على فصول, الرموز, سلاسل, الكائنات, واجهات, والى حد كبير أي شيء مطور سوف تحتاج إلى تخزين ما عدا واجهة المستخدم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top