質問

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インストーラーの前提条件としてマージモジュールを使用し、大成功を収めました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top