2011-10-21 19 views
5

मेरे पास VS2008 (amd64) के साथ बनाया गया एक डीएलएल प्रोजेक्ट है। dll का प्रकटmsvcp90.dll गलत msvcr90.dll पर निर्भर करता है?

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

कहना जब मैं DependencyWalker में dll यह WinSxS-निर्देशिका के लिए

amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251 

कि कैसे भी हो सकता है संदर्भित करता है लोड? क्या यह पूरी अभिव्यक्ति-बात यह नहीं है कि इस तरह की परिस्थितियों से बचने के लिए हर डीएल/एक्से को यह जानकारी दें कि यह किस संस्करण के साथ बनाया गया है और इसलिए सीआरटी संस्करण यह निर्भर करता है?

और दूसरा, और भी अधिक भ्रमित बात यह है कि msvcp90.dllmsvcr90.dll पर निर्भर करता है लेकिन msvcr90.dll नहीं पाया जा सकता है!?! अरे, यह msvcm90.dll और msvcp90.dll के साथ एक ही winsxs-निर्देशिका में है! यदि मैं उसी निर्देशिका में सही msvcr90.dll की प्रतिलिपि बनाता हूं क्योंकि यह मेरा काम करता है! (लेकिन फिर, यह नहीं है कि हमारे पास डेलहेल समय में स्थिति थी? और यह नहीं होना चाहिए कि एमएसवीसी *। डीएल-कॉपीिंग खत्म होनी चाहिए क्योंकि हमने प्रकट किया है ???)

यदि कोई है तो मैं वास्तव में आभारी रहूंगा मेरे लिए एक स्पष्टीकरण!

उत्तर

1
प्रकट साथ

, Microsft "dll नरक" को हल करने के लिए "dll नरक" :(

वैसे, पिछले संस्करण आप संदर्भित कर रहे (9.0.30729) एक नई तरह की पेश किया था MSVCR9 सीआरटी है उन्नत बनाया एसपी 1। हो सकता है कि आप इस संस्करण के साथ अपने वीएस 2008 को मैनिफेस्ट को "सिंक्रनाइज़" करने के लिए अपडेट कर सकें।