msvcr80.dllが見つかりません
-
03-07-2019 - |
質問
C ++ランタイム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をインストールしていない場合は、Microsoft.comからCRT再配布可能パッケージをダウンロードできると思います。
また、VC8またはVC9でビルドされたバイナリに必要なCRTバージョン(RTMとSP1など)を正確に調べるには、マニフェストを抽出できます:
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
他のヒント
Dependency Walker は、この質問に答えるのに役立ちます。
上記のDLLを作成および配布する場合は、インストーラーの一部としてVisual C ++ 8.0 CRTのマージモジュールの使用を検討してください。
Windows SDK 6.1には、新しいmt.exeツールと新しいVisual C ++ CRTがあることに気付きました。 InstallShield 12インストーラーの前提条件としてマージモジュールを使用し、大成功を収めました。