ما هي بعض الأسباب المحتملة ل "نقطة الدخول غير موجودة" خطأ وقت التشغيل؟
-
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) أو قد تحصل على مكدس الخاص بك ملالم.