2008-10-20 11 views
11

Wenn die C++ - Laufzeit msvcr80.dll in einer kompilierten Bibliothek fehlt, gibt es eine Möglichkeit festzustellen, welche Version verwendet wurde, um die Bibliothek zu erstellen oder um sie auf einer späteren Version von msvcr80.dll auszuführen?Fehlende msvcr80.dll

Antwort

13

Das VC80 SP1 CRT-Redistributable-Paket installiert die RTM- und SP1-Versionen der C-Laufzeit in %SystemRoot%\WinSxS (vorausgesetzt, Sie verwenden Windows XP oder Vista; Windows 2000 unterstützt keine Side-by-Side-Assemblys). Wenn VC8 installiert ist, befindet sich das verteilbare CRT-Paket in %ProgramFiles%\Microsoft Visual Studio 8\VC\redist. Wenn Sie VC8 nicht installiert haben, können Sie das verteilbare CRT-Paket von Microsoft.com herunterladen.

, auch genau das, was CRT-Version (zB RTM vs. SP1), um herauszufinden, durch ein binäres benötigt wird, die mit VC8 oder VC9 gebaut wurde, können Sie das Manifest extrahieren:

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

Suchen Sie nach so etwas wie dies:

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

Meine ausführbare Datei erfordert CRT-Version 9.0.21022.8. Diese Versionsnummer wird auch in den WinSxS Verzeichnisnamen eingebettet (leider wird es von Hashes umgeben):

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 
+2

Mt.exe ist ein Tool, das im Microsoft SDK/Visual Studio-Paket zum Auswerten von Manifesten bereitgestellt wird. Weitere Informationen zu mt.exe finden Sie auf der MSDN-Dokumentationsseite: http://msdn.microsoft.com/en-us/library/aa375649(VS.85).aspx (achten Sie darauf und sehen Sie sich den Benutzerinhalt an unten) – Steve

3

Wenn Sie das Authoring und die genannten DLL verteilen, sollten Sie ein Merge-Modul für Visual C++ 8.0 CRT Verwendung als Teil Dein Installateur.

Ich habe festgestellt, dass es ein neues mt.exe-Tool und neue Visual C++ CRT in Windows SDK 6.1 ist. Ich verwende das Merge-Modul als Voraussetzung im InstallShield 12-Installer mit großem Erfolg.