VS2008 (amd64) でビルドされた dll プロジェクトがあります。dllのマニフェストは言う
<assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='amd64' publicKeyToken='1fc8b3b9a1e18e3b' />
dll を DependencyWalker にロードすると、winsxs-directory が参照されます。
amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251
どうすればそれが起こりますか?このマニフェスト全体は、すべての dll/exe にどのバージョンでビルドされているか、したがって依存する CRT バージョンの情報を与えることで、そのような状況を回避するためのものではありませんか?
2 つ目は、msvcp90.dllがmsvcr90.dllに依存しているにもかかわらず、msvcr90.dll が見つからないということです!?! ねえ、それは msvcm90.dll と msvcp90.dll と一緒に同じ winsxs ディレクトリにあります! 私のdllと同じディレクトリに正しいmsvcr90.dllをコピーすると、動作します! (しかし、繰り返しになりますが、これは DllHell 時代の状況ではありませんか? そして、マニフェストがあるので、msvc*.dll のコピーは終了するべきではありませんか???)
誰かが私に説明をしてくれたら、本当に感謝しています!