मेरे पास फ्री इमेज और ओपनसीवी का उपयोग करने पर एक प्रोजेक्ट काम कर रहा है, वर्तमान में हम इनमें से दोनों से जेपीईजी समर्थन का उपयोग कर रहे हैं (मैं इसे ठीक करने के लिए काम कर रहा हूं, लेकिन अभी इसे रहना है)। किसी भी तरह, फ्री इमेज libjpeg 7.0 को अपने स्थिर पुस्तकालयों में संकलित करता है, और ओपनसीवी की हाईगुई लाइब्रेरी इसे साझा लाइब्रेरी के रूप में जोड़ती है (मेरे सिस्टम पर, उबंटू 9, मुझे libjpeg 6.2 स्थापित है)।स्टेटिक और साझा लाइब्रेरी प्रतीक संघर्ष?
वे एक अंतिम लाइब्रेरी में लिंक करते हैं जिसका उपयोग विभिन्न कार्यक्रमों, जावा रैपर आदि में जोड़ने के लिए किया जाता है। यह सब ठीक काम करता है, कोई प्रतीक संघर्ष या संकलन/लिंक समय के दौरान कुछ भी नहीं। हालांकि, जब मैं OpenCV cvLoadImage फ़ंक्शन का उपयोग करके एक छवि खोलने के लिए जाता हूं, तो हेडर पढ़ने पर यह मर जाता है, संभवतः 6.2 और 7.0 में हेडर के बीच मतभेदों के कारण।
यदि मैं फ्रीइमेज को अनलिंक करता हूं (और उस कोड को टिप्पणी करता हूं जिसके लिए इसकी आवश्यकता होती है), ओपनसीवी कॉल फिर से काम करना शुरू कर देते हैं, तो स्पष्ट रूप से फ्रीइमेज से स्थिर libjpeg प्रतीक प्रतीकों के साथ विरोधाभासी हैं जो libjpeg साझा लाइब्रेरी से लोड किए जाएंगे। मुझे क्या पता नहीं चल रहा है कि मेरा संकलक libjpeg प्रतीकों के दो सेटों के कारण लिंकिंग के दौरान त्रुटि क्यों नहीं फेंक रहा है। इसके अतिरिक्त, मैंने अपने सिस्टम के jpeglib.h शीर्षलेख को 7.0 संस्करण के साथ अस्थायी रूप से देखने का प्रयास किया है, यह देखने के लिए कि क्या ओपनसीवी संकलित है, उसके बाद उस प्रतीक के साथ सिंक हो जाएगा जो फ्रीमेज टेबल पर लाता है, ऐसा लगता है कि इसका कोई फायदा नहीं हुआ है।
आखिरकार मैंने libpepeg में jpeg_read_header में एक printf लगाया है जो फ्रीमेज संकलन करता है, और यह देखने के लिए पुनर्निर्मित करता है कि openCV freeimage libjpeg परिभाषा का उपयोग कर रहा है या नहीं। यह प्रिंट नहीं किया गया है इसलिए मुझे नहीं लगता है।
तो मुझे लगता है कि मेरे सवालों
1) क्यों एक स्थिर libjpeg और एक साझा libjpeg लिंक नहीं उत्पन्न करता है जोड़ने प्रतीकों नकल के कारण त्रुटियों कर रहे हैं?
2) क्या किसी को पता है कि ये दो चीजें एक दूसरे के साथ क्यों विवाद कर रही हैं?
संपादित करें: डीबग मोड में ओपनसीवी संकलित करना और फिर नियमित मोड में फिर से कुछ ढीला खटखटाया और इसे फिर से काम करने लगता है, कोई विचार नहीं कि क्या हो रहा है।
मेरी धारणा यह है कि यह एक या दूसरी लाइब्रेरी का उपयोग कर रहा है, लेकिन शायद यह किसी भी तरह से थोड़ा सा उपयोग कर रहा है? ओपनसीवी संकलन वाले हेडर को बदलने से समस्या ठीक नहीं हुई .. –