2010-08-25 11 views
14

मुझे एक सी # 2.0 प्रोजेक्ट मिला है जो 'किसी भी सीपीयू' को लक्षित करने के लिए सेट है, हालांकि यह एक सी ++ प्रोजेक्ट का संदर्भ दे रहा है जो 32 बिट डीएल का निर्माण कर रहा है।मैं 64 बिट परियोजना में 32 बिट डीएलएल का संदर्भ कैसे लगा सकता हूं?

जब मैं एक 64 बिट मशीन मैं निम्नलिखित त्रुटि मिलती है पर मेरे कार्यक्रम चलाने के लिए प्रयास करें:

System.BadImageFormatException was unhandled Message: Could not load file or assembly TreeTMHook, Version=1.0.2889.19619, Culture=neutral, PublicKeyToken=null or one of its dependencies. An attempt was made to load a program with an incorrect format.

मैं इसे कैसे ठीक कर सकते हैं?

अद्यतन

मैं किसी भी CPU के रूप में मुख्य परियोजना रखने में सक्षम होना चाहता हूँ।

धन्यवाद।

+0

ध्यान रखें कि "कोई भी CPU" का अर्थ क्या है। ** आप ** दावा करते हैं कि मुख्य परियोजना हर जगह चलती है, इसका मतलब है कि ** आप ** सभी आर्किटेक्चर निर्भरताओं को समाप्त करने के लिए जिम्मेदार हैं। – MSalters

उत्तर

13

यदि आप 64 बिट मशीन पर 32-बिट डीएलएल को सही तरीके से लोड करना चाहते हैं तो आपको 32 बिट (x86 लक्ष्य) के रूप में अपनी .NET प्रोजेक्ट बनाना होगा।

उत्तर: अपडेट:

आप के रूप में "किसी भी सीपीयू", आप एक 32 बिट और DLL के एक 64 बिट संस्करण की आवश्यकता होगी, और यह सुनिश्चित करें उपयुक्त संस्करण के साथ वितरित किया जाता है बनाने के अपने प्रोजेक्ट रखना चाहते हैं आपका ऐप यदि आप अन्य परियोजना को 64 बिट के रूप में नहीं बना सकते हैं, तो आपको केवल अपनी .NET प्रोजेक्ट को 32-बिट के रूप में बनाना होगा।

4

आपको 32-बिट मोड में चलाने के लिए अपने EXE प्रोजेक्ट को मजबूर करना होगा ताकि वह उस C++ DLL का उपयोग कर सके। प्रोजेक्ट + गुण, बिल्ड टैब, प्लेटफार्म लक्ष्य = x86।

1

आप इस article पर एक नज़र डालना चाहते हैं, यह बताता है कि यह क्यों संभव नहीं है, क्योंकि आप अप्रबंधित कोड तक पहुंचने पर पॉइंटर्स से निपट रहे हैं।

1

Any Cpu के रूप में आप मुख्य परियोजना रखने के लिए, आप .dll के दोनों 32 और 64 बिट संस्करण की आपूर्ति करने की जरूरत है - है, जो संभव हो जाना चाहिए के रूप में आप इसे स्रोत से निर्माण कर रहे हैं देख रहे हैं।

तब आपको प्लेटफॉर्म के आधार पर सही डीएलएल verion की ओर इशारा करते हुए एक मैनिफेस्ट के साथ निष्पादन योग्य आपूर्ति करने की आवश्यकता है।

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