2011-10-21 17 views
5

VS2008 (amd64) ile oluşturulmuş bir dll projem var. Ben winsxs-dizin içinmsvcp90.dll yanlış msvcr90.dll bağımlı olur?

amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251 

Bu nasıl gerçekleşebilir atıfta DependencyWalker içine dll yüklediğinizde dll tezahür

<assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='amd64' publicKeyToken='1fc8b3b9a1e18e3b' /> 

demek? Bütün bu açık-ifade, her dll/exe'ye hangi versiyonun oluşturulduğu bilgisini ve dolayısıyla CRT-versiyonunu ona bağlı olarak vererek böyle durumlardan kaçınmak anlamına gelmez mi?

Ve ikincisi, daha da kafa karıştırıcı şey msvcp90.dllMsvcr90.dll bağlıdır ama msvcr90.dll bulunamıyor olmasıdır!?! Hey, msvcm90.dll ve msvcp90.dll ile birlikte aynı winsxs-dizininde! Eğer sağ msvcr90.dll benim dll ile aynı dizinde kopya çalışırsa çalışır! (Ama yine de, DllHell zamanlarda vardı bu durum değil mi? Ve bu msvc * .dll-copying biz tezahürleri beri bitmiş olmamalıdır ???)

Ben kimseye gerçekten çok minnettar olurdum benim için bir açıklama! tezahür ile

cevap

1

, Microsft yükseltilmiş "dll cehennem" çözmek için "dll cehennem" :(Bu arada

, Söz ettiğiniz son sürümü (9.0.30729) yeni bir tür MSVCR9 CRT edilir tanıştırmıştı SP1 için Bu sürümü ile VS2008'inizi, bu bildiriyi "eşitlemek" için güncelleştirmeye çalışabilir misiniz?