11

C ++ランタイムmsvcr80.dllがコンパイル済みライブラリにない場合、ライブラリの作成に使用されたバージョンを判別する方法、またはライブラリを新しいバージョンのmsvcr80.dllで実行する方法はありますか?

4

3 に答える 3

13

VC80 SP1 CRT再配布可能パッケージは、CランタイムのRTMバージョンとSP1バージョンの両方をにインストール%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
于 2008-10-20T02:25:42.320 に答える
10

Dependency Walkerは、この質問に答えるのに役立ちます。

于 2008-10-20T01:08:52.067 に答える