घर
Top.Mail.Ru Yandeks.Metrika
मंच: "मुख्य";
वर्तमान संग्रह: 2002.01.08;
डाउनलोड करें: [xml.tar.bz2];

नीचे

डीएल एस इसी तरह की शाखाएँ खोजें


HELP ME PLZ   (2001-12-15 18:22) [0]

कृपया मुझे बताएं कि मैं DLL- शकी से एक समारोह का आह्वान करने के लिए DLL के साथ काम कर रहा हूं।



Oleg Gashev   (2001-12-15 18:35) [1]

DLL को कॉल करना

विषय समूह भी देखें

इससे पहले कि आप एक DLL में परिभाषित रूटीन को कॉल कर सकें, आपको उन्हें आयात करना होगा। यह दो तरीकों से किया जा सकता है: एक बाहरी प्रक्रिया या फ़ंक्शन की घोषणा करके, या सीधे विंडोज एपीआई को कॉल करके। जो भी तरीका आप उपयोग करते हैं, रूटीन आपके एप्लिकेशन से रनटाइम तक लिंक नहीं होते हैं। इसका मतलब यह है कि जब आप अपने कार्यक्रम को संकलित करते हैं तो DLL की आवश्यकता नहीं होती है। इसका यह भी अर्थ है कि नियमित आयात करने के प्रयासों का कोई संकलन-समय सत्यापन नहीं है।
ऑब्जेक्ट पास्कल DLL से चर के आयात का समर्थन नहीं करता है।

स्थैतिक लोड हो रहा है

किसी प्रक्रिया या कार्य को आयात करने का सबसे सरल तरीका यह है कि इसे बाहरी निर्देश का उपयोग करके घोषित किया जाए। उदाहरण के लिए,

प्रक्रिया DoSomething; बाहरी "MYLIB.DLL";

यदि आप इस घोषणा को एक कार्यक्रम में शामिल करते हैं, तो MYLIB.DLL कार्यक्रम शुरू होने पर एक बार लोड किया जाता है। कार्यक्रम के निष्पादन के दौरान, पहचानकर्ता DoSomething हमेशा एक ही DLL में एक ही प्रवेश बिंदु को संदर्भित करता है।
आयातित रूटीन की घोषणाओं को सीधे उस कार्यक्रम या इकाई में रखा जा सकता है जहां उन्हें बुलाया जाता है। रखरखाव को सरल बनाने के लिए, हालांकि, आप एक अलग "आयात इकाई" में बाहरी घोषणाओं को एकत्र कर सकते हैं जिसमें डीएलएल के साथ हस्तक्षेप करने के लिए आवश्यक कोई भी स्थिरांक और प्रकार शामिल हैं। (डेल्फी की विंडोज यूनिट एक अच्छा उदाहरण है।) अन्य मॉड्यूल जो आयात इकाई का उपयोग करते हैं, उसमें घोषित किसी भी रूटीन को कॉल कर सकते हैं।

बाहरी घोषणाओं के बारे में अधिक जानकारी के लिए, बाहरी घोषणाएं देखें।
विंडोज एपीआई कॉल के माध्यम से गतिशील लोडिंग।




Oleg Gashev   (2001-12-15 18:36) [2]

-------------------------------------------------- ---------------
LoadLibrary

लोडलॉफ़्ट फ़ंक्शन निर्दिष्ट निष्पादन योग्य मॉड्यूल को कॉलिंग प्रक्रिया के पते स्थान में मैप करता है।

हिस्टेंस लोडलॉफ़्ट (

LPCTSTR lpLibFileName // निष्पादन योग्य मॉड्यूल के फ़ाइल नाम का पता
);


पैरामीटर्स

lpLibFileName

एक शून्य-टर्म स्ट्रिंग को इंगित करता है जो निष्पादन योग्य मॉड्यूल (या तो एक .DLL या .EXE फ़ाइल) का नाम देता है। निर्दिष्ट नाम मॉड्यूल का फ़ाइल नाम है और लाइब्रेरी मॉड्यूल में संग्रहीत नाम से संबंधित नहीं है, जैसा कि मॉड्यूल-परिभाषा (.DEF) फ़ाइल में LIBRARY कीवर्ड द्वारा निर्दिष्ट है।

यदि स्ट्रिंग एक पथ निर्दिष्ट करती है, लेकिन फ़ाइल निर्दिष्ट निर्देशिका में मौजूद नहीं है, तो फ़ंक्शन विफल रहता है।
यदि कोई पथ निर्दिष्ट नहीं है और फ़ाइल नाम एक्सटेंशन छोड़ा गया है, तो डिफ़ॉल्ट लायब्रेरी एक्सटेंशन .DLL जोड़ा जाता है। हालाँकि, फ़ाइल नाम स्ट्रिंग में अनुगामी बिंदु वर्ण (।) शामिल हो सकता है, यह दर्शाने के लिए कि मॉड्यूल नाम का कोई विस्तार नहीं है। जब कोई पथ निर्दिष्ट नहीं किया जाता है, तो फ़ंक्शन निम्न अनुक्रम में फ़ाइल की खोज करता है:

1। वह निर्देशिका जिसमें से एप्लिकेशन लोड की गई है।
2। वर्तमान निर्देशिका।
3। Windows 95: Windows सिस्टम निर्देशिका। इस निर्देशिका का पथ प्राप्त करने के लिए GetSystemDirectory फ़ंक्शन का उपयोग करें।

Windows NT: 32-बिट Windows सिस्टम निर्देशिका। इस निर्देशिका का पथ प्राप्त करने के लिए GetSystemDirectory फ़ंक्शन का उपयोग करें। इस निर्देशिका का नाम SYSTEM32 है।

4। Windows NT: 16-बिट Windows सिस्टम निर्देशिका। कोई Win32 फ़ंक्शन नहीं है जो इस निर्देशिका का पथ प्राप्त करता है, लेकिन यह खोजा जाता है। इस निर्देशिका का नाम सिस्टम है।
5। विंडोज निर्देशिका। इस निर्देशिका का पथ प्राप्त करने के लिए GetWindowsDirectory फ़ंक्शन का उपयोग करें।
6। PATH पर्यावरण चर में सूचीबद्ध निर्देशिका।



खोज की गई पहली निर्देशिका वह निर्देशिका है जिसमें कॉलिंग प्रक्रिया बनाने के लिए उपयोग की जाने वाली छवि फ़ाइल है (अधिक जानकारी के लिए, CreateProcess फ़ंक्शन देखें)। ऐसा करने से निजी डायनेमिक-लिंक लाइब्रेरी (DLL) फ़ाइलों को PATH वातावरण चर में प्रक्रिया की स्थापित निर्देशिका को जोड़े बिना प्रक्रिया से जुड़ी होने की अनुमति मिलती है।
एक बार जब फ़ंक्शन लाइब्रेरी मॉड्यूल फ़ाइल के लिए पूरी तरह से योग्य पथ प्राप्त करता है, तो पथ की तुलना (केस स्वतंत्र रूप से) लाइब्रेरी मॉड्यूल के पूर्ण पथों से की जाती है जो वर्तमान में कॉलिंग प्रक्रिया में लोड होती है। इन पुस्तकालयों में वे लोड शामिल हैं, जब प्रक्रिया शुरू हो रही थी और साथ ही पहले लोड लोड द्वारा लोड की गई थी, लेकिन फ्रीलांस द्वारा अनलोड नहीं किया गया था। यदि पथ पहले से लोड किए गए मॉड्यूल के पथ से मेल खाता है, तो फ़ंक्शन मॉड्यूल के लिए संदर्भ संख्या को बढ़ाता है और उस लाइब्रेरी के लिए मॉड्यूल हैंडल लौटाता है।



मान लौटाएं

यदि फ़ंक्शन सफल होता है, तो वापसी मान मॉड्यूल का एक हैंडल है।
यदि फ़ंक्शन विफल रहता है, तो वापसी मान NULL है। विस्तारित त्रुटि जानकारी प्राप्त करने के लिए, GetLastError पर कॉल करें।

टिप्पणियों

LoadLibrary का उपयोग DLL मॉड्यूल को मैप करने के लिए किया जा सकता है और एक DLL फ़ंक्शन का पता प्राप्त करने के लिए GetProcAddress में उपयोग किए जाने वाले हैंडल को वापस कर सकता है। अन्य निष्पादन योग्य मॉड्यूलों को मैप करने के लिए LoadLibrary का भी उपयोग किया जा सकता है। उदाहरण के लिए, फ़ंक्शन एक .EXE फ़ाइल को निर्दिष्ट करने के लिए एक हैंडल निर्दिष्ट कर सकता है जिसे FindResource या LoadResource में उपयोग किया जा सकता है।
मॉड्यूल हैंडल वैश्विक या अंतर्निहित नहीं हैं। एक प्रक्रिया द्वारा LoadLibrary के लिए कॉल एक हैंडल का उत्पादन नहीं करता है जिसे दूसरी प्रक्रिया उपयोग कर सकती है



पन्ने: 1 पूरी शाखा

मंच: "मुख्य";
वर्तमान संग्रह: 2002.01.08;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.56 एमबी
समय: 0.021 c
14-22348
इवान शिखर
2001-11-06 22:04
2002.01.08
रिक्टर के बारे में


3-21898
प्रलाप
2001-11-30 18:56
2002.01.08
क्या असंगत रूप से संग्रहीत प्रक्रिया को चलाना संभव है?


14-22363
गाढ़ा
2001-11-02 18:16
2002.01.08
तो ...?


1-22173
Petyun
2001-12-20 19:33
2002.01.08
घटक स्थापना


1-22200
Sergei_B
2001-12-15 09:57
2002.01.08
Intxnumx और फ़ाइल का आकार





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский