2011-08-11 13 views
5

पर विजुअल स्टूडियो का उपयोग करके 32-बिट एप्लिकेशन को संकलित करना मैं विंडोज 7 ताजा इंस्टॉल पर 64-बिट मशीन पर विजुअल स्टूडियो 2010 का उपयोग कर सी में लिखे गए एक साधारण 32-बिट हैलो वर्ल्ड एप्लिकेशन को संकलित करने का प्रयास कर रहा हूं। । मैंने विजुअल स्टूडियो को स्थापित करने के बाद "विंडोज 7 और .NET Framework 4 के लिए विंडोज एसडीके" भी स्थापित किया। मैंने प्लेटफ़ॉर्म के रूप में "Win32" का चयन करने वाला एप्लिकेशन बनाया। यह विंडोज 7 पर काम करता है लेकिन अगर मैं Windows XP प्रोफेशनल के साथ अपने 32-बिट मशीन पर एप्लिकेशन को चलाने के (ताजा भी इस स्थापित करते हैं, सॉफ्टवेयर और सेवा पैक के बिना) यह काम नहीं कर यह त्रुटि मिलती लगता है:64-बिट मशीन

"This application has failed to start because msvcr100.dll was not found" 

यह तो

"Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module." 
"Error: Modules with different CPU types were found." 

http://img820.imageshack.us/img820/4725/errordp.png (चित्र)

मैं इसे कैसे हल कर सकते हैं: उपयोगी निर्भरता वाकर 2 त्रुटियों (विवरण के लिए जुड़ा हुआ चित्र देखें) का पता लगाता है हो सकता है? धन्यवाद!

उत्तर

2

इस पर निर्भरता वॉकर पर भरोसा न करें ... यह स्पष्ट रूप से दिखाता है कि आपका एक्सई 32 बिट है। आपकी समस्या वीसी पुनर्वितरण के साथ है, जो सीआरटी डीएलएस हैं - अपने वीएस स्थापना में vcredist_x86.exe के लिए देखो। आपको अपना ऐप चलाने से पहले इसे चलाना चाहिए।

एक और विकल्प सीआरटी को स्थिर रूप से लिंक करना है। /MT option देखें। आपके exe बड़ा कर देगा, लेकिन vcredist सामान को बचाओ।

+0

मैंने/एमटी विकल्प सेट किया है, लेकिन इस बार मुझे "प्रक्रिया प्रविष्टि बिंदु decodepointer गतिशील लिंक लाइब्रेरी kernel32.dll में स्थित नहीं हो सका" क्यों? – mt22

+0

@Lorenzo, DecodePointer XP SP2 आगे से समर्थित है।/एमटी के साथ संकलन केवल आपको आगे ले गया है, मंच पर जहां यह आपकी समस्या है ... गतिशील रूप से लिंक करने के परिणामस्वरूप एक ही समस्या होगी। या तो [XP के मूल संस्करण के लिए संकलित करें] (http://msdn.microsoft.com/en-us/library/aa383745 (v = vs.85) .aspx # setting_winver_or__win32_winnt), या XP अद्यतन करें। – eran

+0

ठीक है, धन्यवाद @रान, एक और छोटा सवाल: मुझे इस तरह के मामलों पर निर्भरता वॉकर पर भरोसा क्यों नहीं करना है? और उन त्रुटियों का क्या अर्थ है? – mt22

2

यहां समस्या यह है कि संकलित प्रोग्राम द्वारा उपयोग किया गया सी रनटाइम Windows XP मशीन पर अनुपलब्ध है। विजुअल स्टूडियो 2010 डिफ़ॉल्ट रूप से हमें 10.0 (msvcr100.dll) रनटाइम करेगा जो डिफ़ॉल्ट रूप से एक्सपी पर उपलब्ध नहीं है। आपके प्रोग्राम को चलाने के लिए आपको अपनी मशीन पर सी रनटाइम मैन्युअल रूप से तैनात करने की आवश्यकता है।

आप निम्न MSDN लेख जो सी अनुप्रयोगों दृश्य स्टूडियो के साथ बनाया गया तैनाती के आसपास मुद्दों पर चर्चा को पढ़ने के लिए चाहते हो सकता है 2010

अतिरिक्त काम पर 32/64 मुद्दों हो सकता है लेकिन यह प्राथमिक समस्या

3

जिस मशीन पर इसे चलाया जाता है वह रनटाइम पुस्तकालयों की आवश्यकता होती है। यह MSDN information देखें।

1

रनटाइम लाइब्रेरी के बारे में उत्तर सही हैं। एक और संभावित समाधान डीएलएल संस्करणों की बजाय स्थिर रनटाइम पुस्तकालयों से लिंक करना है। इस तरह आप एक निष्पादन योग्य बना सकते हैं जिसे आप अतिरिक्त तैनाती परेशानी के बिना किसी भी मशीन पर छोड़ सकते हैं।

यह एक व्यापार-बंद है, लेकिन, आपकी स्थिति के बारे में और जानने के बिना, यह विचार करने लायक हो सकता है।