2011-01-28 24 views
5

मैं एक विरासत सी ++ COM प्रोजेक्ट पर काम कर रहा हूं जिसे मैं विजुअल स्टूडियो 2010 में ले जा रहा हूं। इस प्रोजेक्ट के लिए आईडीएल फ़ाइल में, मुझे किसी अन्य सी ++ प्रोजेक्ट से ओडीएल फ़ाइल का संदर्भ देना होगा। मेरी समस्या यह है कि अन्य प्रोजेक्ट अपनी हेडर फ़ाइल $ (फ़ाइल नाम) _h.h के रूप में उत्पन्न करता है। जब मेरी आईडीएल फ़ाइल अपनी हेडर फ़ाइल जेनरेट करती है, तो यह ओडीएल फ़ाइल नाम $ filename.h के रूप में उत्पन्न करती है, और यह सही फ़ाइल का संदर्भ नहीं दे सकती है।आईडीएल जेनरेट की गई हेडर फ़ाइल

दूसरे शब्दों में, मेरी आईडीएल फाइल "(MyIDLFile.idl") में मेरे पास है

आयात "MyODLFile.odl" की तरह एक बयान

जो उत्पन्न फाइल "(MyIDLFile.h") में हो जाता है

"MyODLFile.h"

शामिल जब मैं इसकी आवश्यकता उत्पन्न करने के लिए

"MyODLFile_h.h"

शामिल

मैं फ़ाइल नाम निर्दिष्ट कैसे करूं जिसे मैं आयात विवरण में आईडीएल उत्पन्न करना चाहता हूं?

उत्तर

2

मुझे यकीन नहीं है कि आयात विवरण के बारे में आपका क्या मतलब है, लेकिन आप जो खोज रहे हैं वह प्रोजेक्ट की प्रॉपर्टी के तहत मिल सकती है। गोटो गुण गुण विंडो (Alt-F7) और "कॉन्फ़िगरेशन गुण/MIDL/आउटपुट" के अंतर्गत, आपको हेडर फ़ाइल घोषित करने का अवसर मिलेगा जिसे आप बनाना चाहते हैं। चूंकि आपकी प्रोजेक्ट विरासत है, इसलिए $ (ProjectName) _h.h के बजाय हेडर फ़ाइल नाम (उदा। $ (ProjectName) .h से "_h" को निकालना आसान हो सकता है। अधिक जानकारी के लिए http://support.microsoft.com/kb/321274 देखें।

+2

यह आयात विवरण है ओपी का जिक्र है: http://msdn.microsoft.com/en-us/library/ विंडोज़/डेस्कटॉप/aa367047.aspx जब आप इसका उपयोग करते हैं तो यह होता है कि निर्भर आईडीएल के लिए एमआईडीएल जेनरेटेड हेडर में अन्य हेडर के लिए एक शामिल होगा। ऐसा लगता है कि ओ ".h" प्रत्यय के साथ डीएल फ़ाइल। मुझे समझ में नहीं आता कि यह क्यों करता है जब डिफ़ॉल्ट रूप से विजुअल स्टूडियो MIDL जेनरेट हेडर फ़ाइल नाम के लिए "% (फ़ाइल नाम) _h.h" का उपयोग करता है। तो डिफ़ॉल्ट का उपयोग करके आप कभी भी उस आईडीएल/ओडीएल फ़ाइलों को किसी अन्य रूप में आयात नहीं कर सकते हैं। – Steiny

0

यह एक आम समस्या है, मैं किसी भी अच्छा समाधान खोजने के लिए नहीं कर पाए हैं, लेकिन एक वैकल्पिक हल अपने IDL फ़ाइलें, जैसे EquipmentConstants_i.idl के लिए एक 'सर्वव्यापी "संलग्न करने के लिए है

माइक्रोसॉफ्ट संदर्भ एक करता है/हेडर संकलन स्विच लेकिन मैं इसे काम करने में सक्षम नहीं हूं (midl /header switch)

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