2012-10-23 18 views
10

के तहत चलाने के लिए प्रतीत होता है मैंने विजुअल स्टूडियो 2010 (विंडोज 7 64 बिट के तहत) में 64 बिट सी ++ प्रोजेक्ट बनाया है;64 बिट वीसी ++ प्रोग्राम 32 बिट मोड

मैंने सोचा कि मैं एक 64 बिट आवेदन चल रहा था, और निम्नलिखित कोड सच लौटे:

bool is64bit = (sizeof(void*)==8); 

लेकिन अगर मैं समारोह IsWow64Process कहा जाता है, यह गलत ... लौटे

अधिक अजीब चीजें:

  • LoadLibrary() कोके तहत एक डीएल लोड करने के लिए कॉल करनाc:\windows\sysWow64\some.dll के तहत एक dll लोड अच्छी तरह से
  • काम करता है असफल हो जायेगी (त्रुटि कोड 193: एक मान्य Win32 आवेदन some.dll नहीं है)

इन सभी विफलताओं का सुझाव आवेदन 32bit मोड, के तहत चल रहा है, लेकिन यह है सच्चाई के खिलाफ सूचक प्रकार 8-बाइट लंबाई

मैं उलझन में हूं, किसी भी मदद की सराहना की जाएगी!

उत्तर

11

लोड लाइब्रेरी() को कॉल के तहत एक डीएल लोड करने के लिए कॉल करना: \ windows \ system32 \ some.dll अच्छी तरह से काम करता है; सी के तहत एक डीएल लोड करना: \ windows \ sysWow64 \ some.dll असफल हो जाएगा

जो कुछ भी आप कहते हैं वह बताता है कि आप 64 बिट चल रहे हैं।

विंडोज 64 बिट में, System32 फ़ोल्डर 64 बिट संस्करणों DLLs का शामिल है, और SysWow64 फ़ोल्डर 32 बिट संस्करणों शामिल हैं। जब IsWow64Process सत्य लौटाता है, तो इसका मतलब है कि आप 64 बिट ओएस पर 32 बिट एप्लिकेशन हैं।

यह फ़ोल्डर के नामों के सुझावों के विपरीत है, जो संभवतः भ्रमित लगता है। मूल रूप से, SysWow64 फ़ोल्डर WoW64 के तहत उपयोग के लिए 32 बिट संस्करण है, जो "विंडोज 64-बिट पर विंडोज 32-बिट" है - मूल रूप से, आप 32 बिट चलाते समय WoW64 DLLs का उपयोग करते हैं, और जब आप चलाते हैं तो सामान्य DLLs 64 बिट।

+0

+1 ओपी का वर्णन सबकुछ 64-बिट ओएस पर 64-बिट अनुप्रयोग के साथ 100% संगत है। –

+0

@ डेविडस्वार्टज़ हाँ - लोग भ्रमित हो जाते हैं क्योंकि WoW64 का उपयोग करने का मतलब है कि आप 32 बिट चला रहे हैं, जो कि आप नाम देने के बारे में सोचने के विपरीत है;) –

+0

अच्छा जवाब। WoW64 और system32 के बीच अंतर को समझने से मुझे कुछ समय पहले ठोस सिरदर्द मिला। – nothrow

3

कार्य प्रबंधक अनुप्रयोग चलाने के लिए Ctrl-Shitf-Esc दबाएं। "प्रक्रियाएं" टैब में आपको प्रत्येक 32-बिट प्रक्रिया के नाम से *32 लेबल दिखाई देगा। यह प्रक्रिया के प्रत्यक्षदर्शी की जांच करने के सबसे सरल तरीकों में से एक है।

संबंधित मुद्दे