تحديد مسار المكتبة لتطبيقات وحدة التحكم Win32

StackOverflow https://stackoverflow.com/questions/694351

  •  22-08-2019
  •  | 
  •  

سؤال

تظهر لي رسالة الخطأ "لم يتم العثور على ملف dll: قد تؤدي إعادة تشغيل التطبيق إلى حل المشكلة" عندما أحاول تنفيذ تطبيق بسيط لوحدة التحكم Win32 "HelloWorld".أنا أعرف موقع .dll.كيفية تحديد موقعه عند تنفيذ ملف exe من موجه الأوامر؟

ملاحظة:يبدو أن نسخ ملف .dll إلى الدليل الحالي لملف .exe يحل المشكلة، لكن هذا الأسلوب غير مناسب في هذه الحالة.

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

المحلول

وDLL تحميل يحدث في عمق السباكة من النوافذ.

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

وهكذا، فإن أبسط الجواب لمشكلتك هو إضافة الدليل الذي يحتوي على DLL إلى PATH الخاص بك. اعتمادا على عندما يحتاج DLL يمكن تحميلها من قبل التعليمات البرمجية الخاصة بك، قد تكون قادرة على (مؤقتا) تعديل PATH من داخل التطبيق الخاص بك "HelloWorld".

نصائح أخرى

وثائق LoadLibraryEx لديه بعض النقاش حول كيفية يبحث Windows ل DLL الخاص بك. كنت قد حاول استخدام العلم LOAD_WITH_ALTERED_SEARCH_PATH إذا كنت تستطيع بناء المسار الكامل إلى DLL الخاص بك أو استخدام في وظيفة SetDllDirectory لإضافة الدليل إلى مسار البحث.

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

ويندوز سوف ابحث في مسار في كل مرة أنه لا يمكن العثور على شيء في الدليل الحالي.

من: http://msdn.microsoft.com/en-us/library/7d83bc18.aspx

مع كل من الارتباط الضمني والصريح ، يبحث Windows أولاً عن "DLLs المعروفة" ، مثل kernel32.dll و user32.dll.ثم يبحث Windows عن DLLs في التسلسل التالي:

  1. الدليل الذي توجد به الوحدة القابلة للتنفيذ للعملية الحالية.

  2. الدليل الحالي.

  3. دليل نظام ويندوز.تقوم الدالة GetSystemDirectory باسترداد مسار هذا الدليل.

  4. دليل ويندوز.تقوم الدالة GetWindowsDirectory باسترداد مسار هذا الدليل.

  5. الدلائل المدرجة في متغير بيئة PATH.

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