मैं सी ++ के साथ कोई विशेषज्ञ नहीं हूं लेकिन मुझे एक ही समस्या थी और कुछ परीक्षण और त्रुटि और इंटरनेट खोज के बहुत से मुझे लगता है कि मैं इसे हल करने में कामयाब रहा हूं।
जैसा कि मैं इसे समझता हूं, समस्या यह है कि ओपनसीवी और टेसेरैक्ट विभिन्न मानक पुस्तकालयों के साथ बनाए जाते हैं। नवीनतम ओपनसीवी libC++ के साथ बनाया गया है जबकि टेस्सेक्टैक्ट stdlibC++
का समाधान है उनमें से एक को पुनर्निर्माण करना है ताकि वे दोनों एक ही मानक लाइब्रेरी का उपयोग कर सकें। मैंने टेसेरैक्ट को फिर से कंपाइल करने का निर्णय लिया और here पर दिए गए निर्देशों का पालन किया जो लाइब्रेरी बनाने के लिए उपयोग किए जाने वाले build script का संदर्भ देता है।
मैं इस स्क्रिप्ट (फिर से एक त्रुटि, परीक्षण द्वारा, वास्तव में नहीं यकीन है कि यह सबसे अच्छा तरीका है) को संशोधित किया बजना ++ संकलक (CXX="/usr/bin/clang++"
) का इस्तेमाल किया और libc का उपयोग करने के ++ (CXXFLAGS="$CFLAGS -stdlib=libc++"
) और यह (कुछ चेतावनी के साथ यद्यपि) संकलित करता है। आपको कुछ शीर्षकों की प्रतिलिपि बनाने की भी आवश्यकता हो सकती है क्योंकि स्क्रिप्ट उन सभी की प्रतिलिपि नहीं लगती है।
फिर अपने आईओएस प्रोजेक्ट में डाउनलोड किए गए एक के बजाय इस लाइब्रेरी का उपयोग करें (बिल्ड सेटिंग्स में libC++ में वापस बदलने के लिए याद रखें) और सब कुछ संकलित और लिंक ठीक होगा।
अब तक यह रनटाइम में ठीक से काम करता प्रतीत होता है।
अधिक accourare होने के लिए, OpenCV को मेरे आईओएस प्रोजेक्ट को संकलित करने की आवश्यकता है: libC++, जबकि टेसेरएक्ट को "डिफ़ॉल्ट कंपाइलर" की आवश्यकता होती है। – Shvalb