2014-12-23 10 views
5

में डीएलएल बनाने के दौरान एक स्थिर लाइब्रेरी का उपयोग करना मैं विजुअल स्टूडियो 12 समुदाय का उपयोग कर डीएलएल बनाने की कोशिश कर रहा हूं जो ओपनसीवी पर निर्भर करता है।विजुअल स्टूडियो

मैं ओपनसीवी को .lib फ़ाइलों के रूप में शामिल करना चाहता हूं इसलिए मुझे इसे अलग-अलग वितरित करने की आवश्यकता नहीं है, लेकिन मुझे अपनी फ़ाइल को डीएलएल के रूप में बनाने की आवश्यकता है।

लेकिन मैं एक डीएलएल में एक lib आयात करने के लिए विजुअल स्टूडियो को कॉन्फ़िगर नहीं कर सकता। में

मेरे परियोजना है -> गुण -> विन्यास गुण -> सामान्य -> ​​विन्यास प्रकार,

मैं चुनें "स्थिर पुस्तकालय (उदारीकरण)" और में:

मेरे परियोजना -> गुण - > विन्यास गुण -> कुलपति ++ निर्देशिकाएँ -> लाइब्रेरी निर्देशिकाएँ,

मैं OpenCV उदारीकरण फ़ाइलों के लिए पथ का चयन करें, और में

मेरे परियोजना -> गुण -> विन्यास गुण -> लिंकर -> अतिरिक्त निर्भरता

मैं प्रत्येक .lib का संदर्भ जोड़ता हूं, यह काम करता है।

लेकिन अगर मैं विन्यास प्रकार बदल कर "गतिशील पुस्तकालय (.dll)", दृश्य स्टूडियो मुझसे कहता है:

opencv_highgui2410d.lib(window.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in VectorsImport.obj 

ऐसा लगता है मैं केवल उदारीकरण फाइलों के साथ फ़ाइलों उदारीकरण कर सकते हैं। लेकिन ऐसा लगता है कि यह बहुत ही असंभव है। मैंने इसे देखा है, लेकिन मुझे केवल .lib फ़ाइलों या .dll फ़ाइलों या दूसरे में से एक को बनाने के तरीके पर मार्गदर्शिकाएं मिलती हैं। यह बहुत आसान होना चाहिए, लेकिन मैं इसे समझ नहीं सकता। मैं लिनक्स में प्रयोग किया जाता हूं, जहां एक .o आसानी से एक .so में शामिल किया जा सकता है। यह मुझे पहेली करता है।

+0

त्रुटि से, opencv.lib गतिशील लिंकिंग के लिए है, आपको गतिशील लिंक का उपयोग करना चाहिए। – Matt

उत्तर

2

त्रुटि को इंगित करता है कि आप एक OpenCV मॉड्यूल जो एक मॉड्यूल VectorsImport.obj (शायद अपनी खुद की परियोजना से) है, जो किया गया है के साथ समर्थन डिबगिंग के साथ स्थिर C/C++ क्रम प्रयोग करने के लिए संकलित किया गया है लिंक करने के लिए कोशिश कर रहे हैं डिबगिंग समर्थन के साथ गतिशील सी/सी ++ रनटाइम का उपयोग करने के लिए संकलित। सी रनटाइम लाइब्रेरी के चार प्रकार माइक्रोसॉफ्ट एसडीके में संगत नहीं हैं, इसलिए सभी ऑब्जेक्ट फाइलें (या तो आपकी परियोजना से या स्थैतिक रूप से जुड़े libs से) को उस सेटिंग से मेल खाना पड़ेगा। विजुअल स्टूडियो 2010 पर, यह सी/सी ++ - कंपाइलर -> कोडजनरेशन -> रनटाइम लाइब्रेरी में पाया जा सकता है।

कृपया ध्यान दें कि (जैसे बोल्ड चेहरे पर ज़ोर देना चाहिए) यह ओपनसीवी डीएलएल या .lib होने के बारे में नहीं है, लेकिन अगर ओपनसीवी को अलग डीएलएल के रूप में जोड़ा जाता है, तो इसे एक अलग प्रकार की सी रनटाइम लाइब्रेरी का उपयोग करने की अनुमति है, तो विसंगति कोई फर्क नहीं पड़ता।

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