2011-10-06 23 views
16

क्या यह स्थिर lib से फ़ंक्शन का उपयोग करने का एक तरीका है, अगर मेरे पास हेडर फ़ाइल नहीं है, केवल * .a फ़ाइल है, लेकिन मुझे फ़ंक्शन हस्ताक्षर पता है?स्थिर पुस्तकालय से फ़ंक्शन का उपयोग कैसे करें यदि मेरे पास हेडर फ़ाइल नहीं है

उत्तर

30

हाँ, अगर तुम समारोह हस्ताक्षर

बस इसे कॉल करने से पहले समारोह हस्ताक्षर लिखते हैं, के रूप में जानते हैं:

void f(int); //it is as if you've included a header file 

//then call it 
f(100); 

तुम सब करने की ज़रूरत है: कार्यक्रम के लिए slib.a लिंक।

भी ध्यान रखें कि, अगर स्थिर पुस्तकालय सी में लिखा है और सी संकलक के साथ संकलित किया गया है, तो आप extern "C" उपयोग करने के लिए है जब समारोह हस्ताक्षर लेखन (यदि आप C++ प्रोग्राम), के रूप में:

समूह
extern "C" void f(int); //it is as if you've included a header file 

//then call it 
f(100); 

वैकल्पिक रूप से, अगर आप कई कार्यों है, तो आप कर सकते हैं उन्हें एक साथ के रूप में:

extern "C" 
{ 
    void f(int); 
    void g(int, int); 
    void h(int, const char*); 
} 

आप इतनी के रूप में किसी भी संभावित नाम-टकराव से बचने के लिए एक नाम स्थान में सभी समारोह हस्ताक्षर लेखन पसंद कर सकते हैं:

namespace capi 
{ 
    extern "C" 
    { 
    void f(int); 
    void g(int, int); 
    void h(int, const char*); 
    } 
} 

//use them as: 

capi::f(100); 
capi::g(100,200); 
capi::h(100,200, "string"); 

अब आप इन्हें हेडर फ़ाइल में लिख सकते हैं ताकि आप अपनी .cpp फ़ाइलों (सामान्य रूप से) में हेडर फ़ाइल शामिल कर सकें, और फ़ंक्शन (सामान्य) के रूप में कॉल करें।

उम्मीद है कि मदद करता है।

+13

दूसरे शब्दों में: लाइब्रेरी के लिए हेडर फ़ाइल लिखें। – sth

5

सबसे आसान तरीका: हेडर फ़ाइल में हस्ताक्षर लिखें, इसे शामिल करें और लाइब्रेरी के विरुद्ध लिंक करें।

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