سؤال

لدي تطبيق بناء مع VS2008 SP1A (9.0.30729.4148) على نظام التشغيل Windows 7 X64 لا يريد أن يبدأ تحت XP.

الرسالة هي The application failed to initialize properly (0x80000003). Click on OK to terminate the application.. وبعد راجعت مع depends.exe ووجدت ذلك msvcr90.dll هل حاول تحميل FlsAlloc من Kernel32.dll - و FLSalloc متاح فقط بدءا من نظام التشغيل Vista. أنا متأكد من أنه لا يستخدم من قبل التطبيق.

كيفية حل المشكلة؟

تم تثبيت حزمة SXS بالفعل على الجهاز الهدف - في الواقع، لدي كل إصدارات 3 من 9.0 SXS (الإصدار الأولي، SP1، و SP1 + أمان SP1)

يتم تجميع التطبيق مع _BIND_TO_CURRENT_VCLIBS_VERSION=1

كما حددت إصدار Windows الهدف الصحيح stdafx.h

 #define WINVER 0x0500
 #define _WIN32_WINNT 0x0500

ملف واضح

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 <security>
 <requestedPrivileges>
  <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
  </requestedPrivileges>
  </security>
  </trustInfo>
 <dependency>
 <dependentAssembly>
  <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b" /> 
  </dependentAssembly>
  </dependency>
 <dependency>
 <dependentAssembly>
  <assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b" /> 
  </dependentAssembly>
  </dependency>
</assembly>

نتيجة من يعتمد

بدأت "C: Program Files App app.exe" (عملية 0xa0) في العنوان 0x00400000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 Ntdll.dll" في العنوان 0x7C900000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 kernel32.dll" في العنوان 0x7C800000. وحدة مدمن مخدرات بنجاح. تحميل "C: Program Files App MFC90.dll" في العنوان 0x785E0000. وحدة مدمن مخدرات بنجاح. تحميل "c: program files app msvcr90.dll" في العنوان 0x78520000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 User32.dll" في العنوان 0x7e410000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 gdi32.dll" في العنوان 0x77f10000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 Shlwapi.dll" في العنوان 0x77f60000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 Advapi32.dll" في العنوان 0x77dd0000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 rpcrt4.dll" في العنوان 0x77E70000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 Secure32.dll" في العنوان 0x77fe0000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 msvcrt.dll" في العنوان 0x77C10000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 comctl32.dll" في العنوان 0x5d090000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 Msimg32.dll" في العنوان 0x76380000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 Shell32.dll" في العنوان 0x7C9C0000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 Oleaut32.dll" في العنوان 0x77120000. وحدة مدمن مخدرات بنجاح. تحميل "C: Windows System32 Ole32.dll" في العنوان 0x774e0000. وحدة مدمن مخدرات بنجاح. تم الوصول إلى نقطة الدخول. تم تحميل جميع وحدات الضمنية. DLLMAIN (0x78520000، DLL_Process_attach، 0x0012fd30) في "C: Program Files App MSVCR90.DLL"؛ getprocaddress (0x7c800000 [c: windows system32 kernel32.dll]، "flsalloc") تم استدعاؤها من "C: Program Files APP MSVCR90.DLL" في العنوان 0x78543ACC وعاد NULL. خطأ: تعذر العثور على الإجراء المحدد (127). getprocaddress (0x7c800000 [c: windows system32 kernel32.dll]، "flsgetvalue") يسمى من "c: program files app msvcr90.dll" في العنوان 0x78543ad9 وعاد null. خطأ: تعذر العثور على الإجراء المحدد (127). getprocaddress (0x7c800000 [c: windows system32 kernel32.dll]، "flssetvalue") يسمى من "C: program files app msvcr90.dll" في العنوان 0x78543ae6 وعاد null. خطأ: تعذر العثور على الإجراء المحدد (127). getprocaddress (0x7c800000 [c: windows system32 kernel32.dll]، "flsfree") يسمى من "c: program files app msvcr90.dll" في العنوان 0x78543af3 وعاد null. خطأ: تعذر العثور على الإجراء المحدد (127).

يجب أن أذكر أنه لدي Windows SDK 7 مثبتة وتكوينها كإعداد افتراضي SDK.

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

المحلول 2

أداة البيان هي حقا عربات التي تجرها الدواب وحل الموثوق فقط لم يتم تضمين البيان في الثنائيات لأن التضمين فشل بشكل عشوائي تقريبا. الحفاظ على البيان خارج القبيح ولكن على الأقل يعمل دائما.

نصائح أخرى

لقد قمت دائما بتضمين البيان في DLLs الخاص بي ولم يكن لديك مشكلة. ركضت فقط مشكلة عندما نسيت تضمين البيان. ثم فشل في العثور على msvcr90.dll على نظام التشغيل Windows 2008، لكنه يعمل على الإصدارات القديمة من Windows، والذي حيرتني لفترة من الوقت.

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