複数の DLL を使用し、VS2008 でコンパイルするプロジェクトをコンパイルしています。最近の Windows Update の後、コンピューターでコンパイルされた DLL が他のコンピューターで動作しなくなりました。
いくつかの調査の結果、私がコンパイルしている CRT 再頒布可能ライブラリがバージョン「9.0.21022.8」からバージョン「9.0.30729.4148」に更新されたことが判明しました。
これは、コンパイルしている EXE のマニフェスト ファイルから明らかです。次の内容が含まれます。
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
つまり、2 つの異なるバージョンの CRT を同時に使用したいということです。2 番目のバージョンは、現在コンパイルしているコードに必要であり、最初のバージョンは、数週間前にコンパイルされた古い dll に必要です。
アプリケーションが展開されているコンピューターでは、Microsoft.VC90.CRT
WinSXS からではなく、ローカル フォルダーから CRT dll を取得するため、これが問題になります。このフォルダーに 2 つの異なるバージョンの dll を含めることはできません。
この問題に対する既知の解決策はありますか?それとも、新しい CRT を使用して他のすべての DLL のコンパイルを開始する必要がありますか?