2010-07-23 8 views
8

मैं इस जैसे उदाहरण के एक जोड़े को देखा है:संदर्भ जोड़ने के लिए लागू किए गए DllImport विशेषता का उपयोग क्यों करें?

[DllImport("user32.dll")] 
static extern bool TranslateMessage([In] ref Message lpMsg); 

[DllImport("user32.dll")] 
static extern IntPtr DispatchMessage([In] ref Message lpmsg); 

लेकिन, मुझे समझ नहीं आता है कि क्यों किसी की तरह वे अन्य पुस्तकालयों कर के रूप में सिर्फ DLL को संदर्भित करने के लिए apposed करना होगा? एमएसडीएन कहता है: "प्रबंधित प्रबंधन में मौजूदा अप्रबंधित कोड का पुन: उपयोग करते समय DllImport विशेषता बहुत उपयोगी होती है। उदाहरण के लिए, आपके प्रबंधित एप्लिकेशन को अप्रबंधित WIN32 API को कॉल करने की आवश्यकता हो सकती है।" लेकिन, क्या यह कह रहा है कि एक अप्रबंधित डीएलएल या असंभव अन्यथा संदर्भित करना उपयोगी नहीं है?

उत्तर

22

"लेकिन, यह है कि यह कह उपयोगी एक अप्रबंधित dll या असंभव नहीं तो संदर्भित करने के लिए नहीं है?"

हाँ, ठीक है। आप 'डीएलएल का संदर्भ देने' के बारे में क्या सोच रहे हैं वास्तव में 'एक .NET असेंबली का संदर्भ' है - ऐसा ही होता है कि एक प्रकार के असेंबली पैकेजिंग का सबसे आम तरीका डीएलएल में है।

DLLImport पूरी तरह से 'पारंपरिक डीएलएल' आयात करने के बारे में है - यानी मूल विंडोज डीएलएल निर्यात तंत्र का उपयोग करके अपने सभी तरीकों को निर्यात करते हैं।

DLLImport के बारे में सोचें क्योंकि वास्तव में 'अप्रबंधित आयात' कहा जाता है, और चीजें स्पष्ट हो सकती हैं।

12

उपयोगकर्ता पुस्तकालय जैसे कुछ पुस्तकालय अप्रबंधित कोड हैं। मूल रूप से इसका मतलब है कि नेट संदर्भ द्वारा उनसे बात करने के लिए अनुमति देने के लिए आवश्यक मेटाडेटा की जरूरत नहीं है (वहाँ भी बहुत कुछ है कि यह में चला जाता है, लेकिन उम्मीद है कि आप आरंभिक बढ़त के लिए पर्याप्त देता है कि।)

2

.NET प्लेटफ़ॉर्म कोड प्रबंधित कोड में संकलित करता है और इसे असेंबली का उपयोग करके संग्रहीत किया जाता है, यह असेंबली डीएलएल फाइलें हैं लेकिन सभी नहीं। डीएलएल फाइलें प्रबंधित कोड वाली असेंबली हैं। आप केवल 'संदर्भ जोड़ें' शैली के साथ प्रबंधित कोड का उपयोग कर सकते हैं।

अन्य भाषाओं और विकास तकनीकें उत्पन्न करती हैं।उन लोगों के साथ अप्रबंधित कोड के साथ DLL फ़ाइलें, वास्तव में तुम भी interoperate कर सकते हैं (कॉल तरीकों), लेकिन आप की जरूरत DllImport विशेषता

8

संक्षेप में:

  • संदर्भ जोड़े के लिए प्रयोग किया जाता है: युक्त कोड कामयाब DLL फ़ाइलें

  • DllImport के लिए प्रयोग किया जाता है: अप्रबंधित कोड युक्त DLL फ़ाइलों

परिभाषाएं:

प्रबंधित कोड: कोड है कि केवल एक सामान्य भाषा रनटाइम (CLR) आभासी मशीन, आम तौर पर .NET फ्रेमवर्क (या Mono) के प्रबंधन के तहत रन।

अप्रबंधित कोड: किसी भी संकलित युग्मक ओएस पर सीधे चल रहा है; DLLs विजुअल स्टूडियो .NET से अधिक उम्र के 2002

अधिक जानकारी के लिए कुछ भी का उपयोग कर संकलित: Managed, Unmanaged, Native: What Kind of Code Is This?

+1

Downvoter देखभाल समझाने के लिए? – slayernoah

+3

मैं आपको पॉइंटलेस डाउनवॉटर – YoungStacker

+0

रद्द करने के लिए अपवित्र करूंगा और मैंने फिर से उभारा है, क्योंकि यह अच्छी तरह से समझाया गया है। तो डाउनवोट करने के लिए अशिष्ट। इसे – Fandango68

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