BUG: الرجوع إلى مكتبة نوع مختلفة قد تقديم تابعة للنظام الأساسي للتنفيذ

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

اضغط هنا لرابط المقالة باللغة الانجليزية281913
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
بعد التحويل البرمجي مشروع Visual Basic يرجع مكتبة نوع واحد أو أكثر على النظام الأساسي واحد (مثل كمبيوتر يعمل بنظام التشغيل Microsoft Windows 2000) ، ثنائي الناتج فشل تشغيل على الأنظمة الأساسية الأخرى (مثل Microsoft Windows NT 4 ، Microsoft Windows 95- ، 98 Windows Microsoft-، و أجهزة الكمبيوتر التي تعمل بنظام التشغيل Microsoft Windows ME) ويحصل انتهاك الوصول إلى (AV).
السبب
برنامج التحويل البرمجي Visual Basic حساس لحالة عند بقراءة إدخالات dllname في مكتبات الأنواع. ونتيجة لذلك، إذا مراجع مشروع أو أكثر من مكتبات الأنواع كتابة إدخال dllname لـ DLL نفس في حالات مختلفة في مكتبتين مختلفتين dllname("kernel32.dll") في مكتبة A و dllname("KERNEL32.DLL") في مكتبة B، المحول البرمجي تنشئ قسمين الاستيراد من أجل DLL نفس ثم يعرض النظام الأساسي الثنائية غير المستقلين.
تصريح
أقرت Microsoft أن هذا خطأ في منتجات Microsoft المسردة في بداية هذه المقالة.
معلومات أخرى

خطوات إعادة إنشاء السلوك

  1. إعداد جهاز كمبيوتر يعمل بنظام التشغيل Windows 2000 و جهاز كمبيوتر يعمل بنظام التشغيل Windows NT 4 كليهما بأحدث حزم الخدمة. أيضاً تثبيت Visual Basic 6.0 Visual C++ مع حزمة الخدمة Service Pack 5 على كل من جهازي الكمبيوتر.
  2. على كمبيوتر يستند إلى Windows 2000 النسخ واللصق لغة وصف واجهة التالية (IDL) التعليمات البرمجية في المفكرة ثم احفظ lcase.idl. تجميع مع MIDL.EXE midl lcase.idl. مكتبة النوع الناتج المسمى lcase.tlb.
    [  uuid(D618AA4D-814A-47a2-9AC1-DDE18EDF1C54),  version(1.0),  helpstring("Lower case test")]library lcasetest{    [      dllname("kernel32.dll"),      version(1.0),      helpstring("Sleep function exported by kernel32.dll")    ]    module lcasetest {        [			entry("Sleep"), 			helpstring("sleep - lcase test.")		]        void _stdcall Sleep([in] long dwMS);    };};					
  3. كما هو موضح في الخطوة 1، إنشاء ucase.tlb برمز IDL التالي:
    [  uuid(3F215C63-D0AD-4980-93F2-5DDF850061E4),  version(1.0),  helpstring("Upper case test")]library ucasetest{    [      dllname("KERNEL32.DLL"),      version(1.0),      helpstring("Sleep function exported by kernel32.dll")    ]    module lcasetest {        [			entry("Sleep"), 			helpstring("sleep - ucase test.")		]        void _stdcall Sleep([in] long dwMS);    };};					
  4. إنشاء مشروع Visual Basic EXE قياسي. يتم إنشاء Form1 بشكل افتراضي.
  5. من القائمة المشروع انقر لتحديد المراجع. في مربع الحوار مراجع استعرض lcase.tlb ثم ucase.tlb حدد كلا مكتبات ثم انقر فوق موافق.
  6. قم بإضافة التعليمات البرمجية التالية إلى Form1:
    Private Sub Form_Load()    lcasetest.Sleep 1    ucasetest.Sleep 1End Sub					
  7. في القائمة ملف، انقر فوق حفظ المشروع ثم قم بتحديد إجراء Project1.exe ترجمة المشروع.
  8. قم بتشغيل الملف التنفيذي Project1.exe ، ثم لاحظ يظهر النموذج مع عدم وجود أخطاء.
  9. نسخ Project1.exe إلى جهاز كمبيوتر يستند إلى Windows NT 4 وتشغيلها. ملاحظة في حدوث "انتهاك وصول".
  10. انسخ ترجمة نفس المشروع على كمبيوتر يستند إلى Windows NT 4 ثم تشغيلها Windows NT 4 و يستند إلى نظام التشغيل Windows 2000 جهازي الكمبيوتر. لاحظ أن تفشل على كمبيوتر يعمل بنظام التشغيل Windows 2000.
tlbpatch

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 281913 - آخر مراجعة: 02/28/2014 04:23:57 - المراجعة: 3.0

Microsoft Visual Basic 4.0 Enterprise Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic 4.0 Professional Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 6.0 Learning Edition

  • kbnosurvey kbarchive kbmt kbbug kbcompiler kbnofix KB281913 KbMtar
تعليقات