У меня есть проект DLL, построенный с VS2008 (amd64). Манифест длл говорят
<assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='amd64' publicKeyToken='1fc8b3b9a1e18e3b' />
Когда я загружаю dll в DependencyWalker, он ссылается на каталог winsxs
amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251
Как это может произойти? Разве вся эта манифестная вещь не предназначена для того, чтобы избежать подобных ситуаций, давая каждому dll / exe информацию, с какой версией она построена и, следовательно, с CRT-версией, от которой она зависит?
И вторая, еще более запутанная вещь заключается в том, что msvcp90.dll зависит от msvcr90.dll , но msvcr90.dll не может быть найден!?! Эй, он находится в одном каталоге winsxs вместе с msvcm90.dll и msvcp90.dll!
Если я копирую правильный msvcr90.dll в ту же директорию, что и моя dll, она работает! (Но опять же, разве это не та ситуация, которая была у нас во времена DllHell? И разве не должно быть закончено копирование msvc * .dll, так как у нас есть манифесты ???)
Я был бы очень признателен, если бы у меня было объяснение для меня!