سؤال

إذا كان C ++ Runtime MSVCR80.dll مفقودًا من مكتبة مجمعة ، فهل هناك أي طريقة لتحديد الإصدار الذي تم استخدامه لإنشاء المكتبة أو لتشغيله على إصدار لاحق من msvcr80.dll؟

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

المحلول

ستقوم الحزمة القابلة لإعادة توزيع VC80 SP1 CRT بتثبيت كل من إصدارات RTM و SP1 من وقت التشغيل C %SystemRoot%\WinSxS (على افتراض أنك تستخدم Windows XP أو Vista ؛ لا تدعم Windows 2000 التجميعات جنبًا إلى جنب). إذا قمت بتثبيت VC8 ، فإن الحزمة القابلة لإعادة التوزيع CRT موجودة %ProgramFiles%\Microsoft Visual Studio 8\VC\redist. إذا لم يكن لديك تثبيت VC8 ، أعتقد أنه يمكنك تنزيل حزمة CRT القابلة للتوزيع من Microsoft.com.

أيضًا ، لمعرفة إصدار CRT بالضبط (على سبيل المثال RTM مقابل SP1) بواسطة ثنائي تم تصميمه باستخدام VC8 أو VC9 ، يمكنك استخراج البيان:

mt.exe -inputresource:mydll.dll;#1 -out:mydll.dll.manifest

ابحث عن شيء مثل هذا:

<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>

يتطلب قابلة للتنفيذ الخاص بي الإصدار CRT 9.0.21022.8. رقم الإصدار هذا مضمن أيضًا في WinSxS أسماء الدليل الفرعي (للأسف محاط بتجزئة):

D:>dir c:\windows\WinSxS\*VC90.CRT*
12/14/2007  02:16 AM    <DIR>          amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b
12/14/2007  02:00 AM    <DIR>          x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91

نصائح أخرى

تبعية ووكر سوف تساعدك على الإجابة على هذا السؤال.

إذا كنت تقوم بتأليف وتوزيع DLL المذكورة ، ففكر في استخدام وحدة دمج لـ C ++ 8.0 CRT كجزء من المثبت الخاص بك.

لقد لاحظت أن هناك أداة جديدة MT.exe و C ++ CRT جديدة في Windows SDK 6.1. يمكنني استخدام وحدة الدمج كشرط مسبق في تثبيت InstallShield 12 مع نجاح كبير.

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