2012-07-28 17 views
7

बिना यह सी के बारे में विषयों के लिए गूगल खोज करने के लिए है क्योंकि मैं C# या सी ++ लेकिन नहीं सी, के लिए प्रासंगिक परिणाम ढूंढने तो शायद किसी ने मुझसे एक त्वरित, सरल जवाब दे सकता है रखना बहुत मुश्किल है। एलआईबी फ़ाइल के बिना इसके साथ जाने के लिए मैं सीएल में डीएलएल में फ़ंक्शंस का उपयोग कैसे कर सकता हूं? मैं सभी फ़ंक्शन प्रोटोटाइप और उनके नामों को जानता हूं।उपयोग DLL सी में lib

अग्रिम धन्यवाद!

+0

मैं तुम्हें भाई है! सी पृष्ठभूमि में और अधिक से दूर चला जाता है .. – displayname

उत्तर

8

हाँ आप कर सकते हैं। तुम्हें पता है, GetProcAddress समारोह का उपयोग करना चाहिए DLL में सीधे फ़ंक्शन को कॉल करने, लिब शामिल

प्रक्रियाओं स्पष्ट रूप से एक DLL कॉल GetProcAddress को जोड़ने DLL में एक निर्यात समारोह का पता प्राप्त करने के लिए बिना। आप DLL फ़ंक्शन को कॉल करने के लिए लौटा फ़ंक्शन पॉइंटर का उपयोग करते हैं।

ऊपर के लिंक से उदाहरण के शब्दों में:

typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT); 
... 

HINSTANCE hDLL;    // Handle to DLL 
LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer 
DWORD dwParam1; 
UINT uParam2, uReturnVal; 

hDLL = LoadLibrary("MyDLL"); 
if (hDLL != NULL) 
{ 
    lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL, 
              "DLLFunc1"); 
    if (!lpfnDllFunc1) 
    { 
     // handle the error 
     FreeLibrary(hDLL); 
     return SOME_ERROR_CODE; 
    } 
    else 
    { 
     // call the function 
     uReturnVal = lpfnDllFunc1(dwParam1, uParam2); 
    } 
} 
+2

यही वह है जो मैं करने जा रहा हूं। जब यह परियोजना खत्म हो जाएगी तो मैं आपको अपने अनुभव के बारे में बताऊंगा। मैं एक पुराने कंप्यूटर में चल रहे एक पुराने विरासत Winradio 3000 श्रृंखला कार्ड रिमोट कंट्रोल करने की कोशिश कर रहा हूँ। मेरे पिता इसे कहीं भी इस्तेमाल करने में सक्षम होना चाहते हैं और ऐसा लगता है कि रिमोट कंट्रोलिंग जादुई रूप से करना आसान है। खैर, मुझे एक कंप्यूटर से दूसरी बार संगीत स्ट्रीमिंग मिल गई है, इसलिए एक शुरुआत है, अब मुझे केवल डीएलएल के साथ नियंत्रण लागू करने की आवश्यकता है जो विनाड्रियो के साथ आता है और मेरे पिता के जादुई रिमोट कंट्रोल समाप्त हो जाएंगे। –

+0

ओह और फिर मुझे एक यूजर इंटरफेस बनाने की ज़रूरत है मुझे लगता है ... –

+0

हाँ, यह बहुत अच्छा काम करता है! वास्तव में इसके लिए कुछ भी नहीं। Winradio API के लिए प्रलेखन थोड़ा उलझन में था (उनकी दुनिया में डीडब्ल्यूओआर स्पष्ट रूप से मेरी दुनिया में लंबे समय तक हस्ताक्षर नहीं है)। इसके अलावा यह बहुत आसान था। बहुत बहुत धन्यवाद! –

3

आप LoadLibrary() और GetProcAddress() DarkXphenomenon द्वारा जवाब में वर्णित के रूप में उपयोग कर सकते हैं। या, एक और विकल्प है डीएलएल के लिए अपनी खुद की आयात लाइब्रेरी बनाना .def फ़ाइल बनाकर, फिर इसे आयात लाइब्रेरी उत्पन्न करने के लिए LIB कमांड के माध्यम से चलाएं। यहां अतिरिक्त विवरण:

http://support.microsoft.com/kb/131313

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