2009-08-20 16 views
20

में कनवर्ट करें मेरे पास एक आईडीएल फ़ाइल में परिभाषित एक इंटरफेस है जिसे मैं सी # में उपयोग करना चाहता हूं। क्या आईडीएल को सी # में प्रयोग करने योग्य कुछ करने का कोई तरीका है?इंटरफ़ेस आईडीएल फ़ाइल को C#

+0

"कुछ उपयोग करने योग्य" क्या है? – Achim

+0

सी # में कुछ उपयोगी है। कुछ जो संकलन करेगा। –

उत्तर

27

एक तरीका लाइब्रेरी (.tlb) बनाने के लिए आईडीएल पर MIDL चलाने का एक तरीका है। आईडीएल में library ब्लॉक की आवश्यकता है। एक बार आपके पास .tlb हो, तो आप सी # परिभाषा/इंटरऑप डीएलएल प्राप्त करने के लिए tlbimp.exe चला सकते हैं।

+0

और आप जेनरेट इंटरऑप डीएलएल से सी # परिभाषा देखने के लिए [JetBrains dotPeek] (https://www.jetbrains.com/decompiler/) का उपयोग कर सकते हैं। –

4

आईडीएल में डेटाटाइप/संरचनाओं का क्या उपयोग किया जाता है? यदि पहले से कोई इनबिल्ड प्रकार नहीं है तो आपको सबसे पहले डेटाटाइप को सी # में परिभाषित करना चाहिए।

संरचनाओं को बदलने के लिए आप निम्न उपकरण का उपयोग कर सकते हैं, लेकिन आपको मैन्युअल रूप से आउटपुट को सत्यापित करने की आवश्यकता है।

डाउनलोड: http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe

यह उपयोगिता Accessing Windows API Constants and Structs for P/Invoke में वर्णन किया गया है।

मूल जनवरी 2008 लेख अब .CHM help file download के रूप में उपलब्ध है, जो https://msdn.microsoft.com/magazine/msdn-magazine-issues के नीचे से जुड़ा हुआ है। समय के लिए, स्रोत कोड http://clrinterop.codeplex.com/ पर पाया जा सकता है।

+0

इस के लिए प्रलेखन कहां है> ?? –

+1

@CandraEskay चूंकि एमएसडीएन लेख का लिंक अब सही नहीं था, इसलिए मैंने इस उपयोगिता के बारे में जानकारी अपडेट करने की स्वतंत्रता ली। –

1

उदाहरण के लिए, मैंने हाल ही में एक्सपीएस प्रिंट एपीआई का उपयोग किया है और xpsobjectmodel.h इंटरफेस की आवश्यकता है। विंडोज एसडीके सौभाग्य से xpsobjectmodel.idl के साथ आता है।

मैंने पहली बार एमआईएलएल के साथ टीएलबी फाइल जेनरेट की और मेरे सी # प्रोजेक्ट में 'संदर्भ ...' अनुभाग में जोड़े जाने के लिए तैयार एक उचित डीएलएल असेंबली उत्पन्न करने के लिए टीएलबीआईएमपी का उपयोग किया।

अपने प्रोजेक्ट फ्रेमवर्क के लिए सही संस्करण के साथ टूल का उपयोग करना सुनिश्चित करें। उदाहरण के लिए, यदि आपका प्रोजेक्ट फ्रेमवर्क 3.5-आधारित है, तो 4.0 टूलसेट से tlbimp का उपयोग करके काम नहीं करेगा।

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