2010-07-13 13 views
5

हम अपने सी ++ कोड के अंदर किसी भी सी लाइब्रेरी का उपयोग कैसे कर सकते हैं? (हम? कि पर कोई tuts? सकता है) (मैं VS10 का उपयोग करें और अब इस तरह के x264 और OpenCV के रूप में libs बारे में बात कर)हम अपने सी ++ कोड के अंदर किसी भी सी लाइब्रेरी का उपयोग कैसे कर सकते हैं?

उत्तर

2

ठीक है आप अपने सी ++ कोड से किसी भी सी लाइब्रेरी का उपयोग कर सकते हैं। सी ++ :-) के साथ यह एक अच्छी चीज है, आपको बस अपने सी ++ कोड में लाइब्रेरी हेडर शामिल करना होगा और आपके द्वारा उपयोग की जाने वाली लाइब्रेरी से लिंक करना होगा।

कोई भी अच्छी लाइब्रेरी सी ++ से अपने हेडर समावेशन को संभालती है।

#ifdef __cplusplus 
extern "C" { 
#endif 

#include "c_header.h" 

#ifdef __cplusplus 
} 
#endif 

संपादित करें:: जैसा कि माइक ने कहा, ifdef भागों केवल यदि आप नहीं जानते की जरूरत है अपनी फ़ाइल सी या सी के साथ इस्तेमाल किया जाएगा यदि ++ यदि यह मामला नहीं है तो आप इसे अपने आप को तरह बातें साथ क्या करना है । उदाहरण के लिए फ़ाइल एपीआई हेडर का हेडर है, तो आप उन्हें रख सकते हैं।

वैसे, ओपनसीवी सी या सी ++ द्वारा समावेशन को संभालता है (इस प्रकार आपके पास पहले से ही ओपनसीवी हेडर में #ifdef भाग है)। मैं x264 के लिए नहीं पता ...

my2cents

+0

यदि आपको पता है कि आप सी ++ लिख रहे हैं तो आपको '#ifdef __cplusplus' की आवश्यकता नहीं है। यह केवल एक शीर्षलेख में आवश्यक है जो दोनों भाषाओं द्वारा शामिल करने के लिए डिज़ाइन किया गया है। –

+0

@ माइक: बेशक आप सही हैं। मैंने शायद बहुत सारे ढांचे/libs लिखा है :) मेरी बुरी आदतों के लिए खेद है;) – neuro

10

हाँ, केवल एक चीज आपको बस इतना करना extern "C" साथ #include बयान रैप करने के लिए सी ++ बताने के लिए है संकलक समारोह के नाम और इस तरह के लिए C-अर्थ विज्ञान का उपयोग करें:

extern "C" { 
#include <library.h> 
} 

जोड़ने के दौरान, बस किसी भी सामान्य सी ++ lib तरह पुस्तकालय जोड़ें।

+0

कि जब तक सी हेडर नाम के रूप में ('new' या' private') की तरह किसी भी सी ++ कीवर्ड का उपयोग नहीं करता ठीक है। –

+0

और कॉलिंग फ़ंक्शंस के बारे में - अगर मेरे पास लाइब्रेरी में 'write_frame' था। सी ++ में मैं इसे सामान्य फ़ंक्शन की तरह कॉल कर सकता हूं? – Rella

+0

@ ओले: हाँ, जब तक इसे 'बाहरी' सी घोषित किया जाता है, 'आप इसे किसी अन्य फ़ंक्शन की तरह कॉल कर सकते हैं। –

0

जहां तक ​​मुझे पता है, यदि आपके पास लाइब्रेरी है जिसका उपयोग आप करना चाहते हैं, तो आप बस अपनी हेडर फ़ाइल में शामिल करें और आप इसका उपयोग कर सकते हैं। वहां से ।

+0

आपको सी ++ कंपाइलर को बताने के लिए 'बाहरी' सी "' की आवश्यकता है, जिसमें लाइब्रेरी फ़ंक्शंस में सी-स्टाइल लिंकेज है, और कुछ सी शीर्षलेखों में ऐसे नाम हो सकते हैं जो C++ में अमान्य हैं। –

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

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