ما هي بعض الأسباب المحتملة ل "نقطة الدخول غير موجودة" خطأ وقت التشغيل؟

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

  •  19-09-2019
  •  | 
  •  

سؤال

أحاول ترجمة برنامج تم إنشاؤه من Visual Studio 8، وتحويله إلى Visual Studio 9. بعد إعطاء جميع الدلائل المطلوبة .dll و .lib و #include، قمت بتجميع البرنامج بنجاح. ومع ذلك، عندما حاولت تشغيله، فإنه يعطي دائما خطأ:

لا يمكن تحديد موقع Swapbuffers نقطة إدخال الإجراء في مكتبة الارتباط الديناميكي OpenGl32.dll.

راجعت أدلة بلدي. OpenGl32.dll موجودة! حتى أنني قمت بتنزيل OpenGl32.dll مرة أخرى في حال، الألغام هي نسخة قديمة؛ كلا، لا يعمل. حاولت حتى وضع OpenGl32.dll بجانب .exe المدمج. كلا، لا يزال يعطي نفس الخطأ.

هل يبدو أنك تعرف ما هي بعض الأسباب المحتملة هنا؟

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

المحلول

يشبه SwapBuffers الوظائف ببساطة ليست هناك. هل تحصل على تحذير على تجميع الوقت حول المراجع غير المحددة أو هذه؟

حاول استكشاف DLL باستخدام أداة مناسبة لعرض جداول التصدير والبحث عن الوظيفة - SE إذا كانت هناك (أعطتني Google هذا: DLL تصدير المشاهد)

يمكنك أيضا محاولة تحميله بشكل حيوي مثل هذا:

HMODULE lib = LoadLibraryA("OpenGL32.DLL");
FARPROC WINAPI proc = GetProcAddress(lib, "SwapBuffers");

if (!proc)
   printf("SwapBuffers() not found\n");

كن حذرا على استدعاء مؤشر الوظيفة proc مباشرة دون معرفة اتفاقية الاتصال المستخدمة في DLL (ربما Stdcall) أو قد تحصل على مكدس الخاص بك ملالم.

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