2015-02-04 13 views
25

मैं OpenCV 2.4.10 का उपयोग कर एक सरल परियोजना के निर्माण के लिए कोशिश कर रहा हूँ, लेकिन मैं इस तरह त्रुटियों की एक गुच्छा मिलता है:Cocoapods OpenCV 2.4.10 लिंकर त्रुटि

 
Undefined symbols for architecture x86_64: 
    "_jpeg_free_large", referenced from: 
     _free_pool in opencv2(jmemmgr.o) 
    "_jpeg_free_small", referenced from: 
     _free_pool in opencv2(jmemmgr.o) 
     _self_destruct in opencv2(jmemmgr.o) 

यहाँ ViewController.m

#import "ViewController.h" 
#import <opencv2/opencv.hpp> 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    cv::Mat greyMat; 
} 
है जब मैं संस्करण का उपयोग 2.4.9.1 या 2.4.9

Podfile

platform :ios, '8.1' 

pod 'OpenCV', '2.4.10' 

परियोजना ठीक बनाता है।
मैं इस परियोजना को यूआरएल से डाउनलोड की गई फ्रेमवर्क फ़ाइल के साथ भी बनाने में सक्षम था जिसे मैंने पॉडस्पेक 2.4.10 में पाया था।

+1

व्यक्ति जो downvoted - यह भी बता कृपया बताएं कि आप यह downvoted। समस्या मौजूद है। –

उत्तर

2

मैंने ओपनसीवी के कोकोआपोड्स (2.4.11, 2.4.12, 2.4.12.3, 3.0.0) में नए संस्करण जोड़े हैं।

2.4.11, 2.4.12, और 2.4.12.3 को libjpeg को जोड़ने की आवश्यकता है, इसलिए अब पॉड वास्तव में रेपो डाउनलोड करता है, स्रोत से संकलित करता है, और फिर opencv2.framework फ़ाइल के अलावा libjpeg को लिंक करता है। यह अब कोकोपोड्स के माध्यम से बॉक्स से बाहर काम करता है, हालांकि यह स्रोत से संकलित होने के बाद pod install करते समय कुछ समय लगता है। बस यह सुनिश्चित कर लें कि इसे रद्द करने के दौरान इसे रद्द न करें (कोकोपोड्स में bug है जो इसे रद्द होने पर समस्याएं उत्पन्न करता है)।

हुड के तहत, 3.0.0 प्रीबिल्ट opencv2.framework फ़ाइल के साथ पहले की तरह काम करता है और अब कोकोपोड्स के माध्यम से बस ठीक स्थापित किया जा सकता है।

संस्करण 2.4.10 अभी भी कोकोपोड्स में टूटा हुआ है, लेकिन चूंकि उस संस्करण में मेरी मशीन पर स्रोत से संकलन करते समय त्रुटियां फेंकता है, इसलिए मैं इतना कुछ नहीं कर सकता।

(नोट: मैं फली के मूल मेंटेनर नहीं हूँ, मैं केवल इन नए संस्करणों का योगदान दिया।)

+0

हां, यहां तक ​​कि एक बहुत ही सरल पॉडफाइल का उपयोग करके, इनमें से कोई भी काम नहीं: http://pastebin.com/hbjNTF9H – shmim

+0

shmim, यह बहुत अजीब है। क्या होता है जब आप http://download.sourceforge.net/project/opencvlibrary/opencv-ios/3.0.0/opencv2.framework.zip पर जाते हैं? क्या आप फ़ाइल डाउनलोड करने में सक्षम हैं? –

+0

जब मैं अपनी टिप्पणी पोस्ट करता हूं तो स्रोत फोर्ज लिंक काम नहीं कर रहे थे, लेकिन वे अब काम कर रहे हैं। मैंने इससे पहले यह सुना है ... 3.0 डाउनलोड, और मुझे लगता है कि यह काम करता है, हालांकि मैंने अभी तक इसका परीक्षण नहीं किया है। हालांकि, संस्करण 2.4.11, 2.4.12, 2.4.12.3 सभी फेंक कंपाइलर त्रुटियां: https://paste.ee/p/ACvj0 – shmim

5

आईओएस

Bug #4052

शायद के लिए ओपन सीवी के वर्तमान संस्करण में कोई समस्या हो लगता है 2.4.9 का उपयोग कर रखना है।

+0

2.4.9 का उपयोग नहीं कर सकता क्योंकि ऐप्स अब 64 बिट होने की आवश्यकता है। – ahwulf

2

मेरे पास इसका समाधान नहीं है लेकिन मेरे पास यहां एक कामकाज है। मैंने परियोजना को here से डाउनलोड किया है। और इस परियोजना से मेरे प्रोजेक्ट में ढांचे और शीर्षलेख की प्रतिलिपि बनाई। enter image description here

18

Bug 4052 2.4.10 के लिए अभी भी अनसुलझा है और 2.4.11 के लिए कोई फली नहीं है, इसलिए आपको 2.4.9 का उपयोग करना होगा जो आईएमओ स्थिर है।

अपने का उपयोग कर फली

pod 'OpenCV', '2.4.9' 
+0

पॉड वितरण टूटा हुआ प्रतीत होता है (SourceForge लिंक त्रुटियां)। एक फिक्स के लिए http://stackoverflow.com/a/31226206/1375695 देखें। – foundry

10

तो यहाँ एक छोटे से वैकल्पिक हल है, तो। समस्या यह है क्योंकि XCode प्रोजेक्ट libjpeg.a लाइब्रेरी से लिंक करने में असमर्थ है। इसलिए जब आप प्रोजेक्ट संकलित करते हैं तो आपको उपर्युक्त त्रुटियां क्यों मिलती हैं।

इन चरणों का पालन करें:

  1. जाएं: [[http://sourceforge.net/projects/libjpeg-turbo/files/1.4.0/]] और libjpeg-टर्बो 1.4.0.dmg (3.8 एमबी) फ़ाइल डाउनलोड करें।
  2. पैकेज स्थापित करें। एक बार अपनी किया आप इस मार्ग के तहत स्थापित फ़ाइलों मिलेगा: /opt/libjpeg-टर्बो/lib
  3. अपने टर्मिनल खोलें और निम्न आदेश टाइप करें: लाइपो -info/opt/libjpeg-टर्बो/lib/libjpeg .एक
  4. टर्मिनल से पता चलता है तो निम्न आदेश चलाने के बाद उत्पादन तो इसका मतलब है, आप पुस्तकालय अपने iOS परियोजना के लिए (ARMv7/armv7s) वसा फ़ाइल में
    • आर्किटेक्चर का उपयोग कर सकते हैं:/opt/libjpeg -टर्बो/lib/libturbojpeg.a हैं: i386 x86_64 armv6 armv7 armv7s arm64 *
  5. नेविगेट करने के लिए खोजक का उपयोग करें:/opt/libjpeg-turbo/lib और libjpeg.a कॉपी करें और इसे अपने प्रोजेक्ट फ़ोल्डर में रखें।
  6. अपने XCode प्रोजेक्ट में से अधिक प्रमुख -> लक्ष्य - -> परियोजना का नाम पर क्लिक करें> सामान्य -> ​​लिंक चौखटे और पुस्तकालयों -> जोड़ें बटन नीचे रखा पर क्लिक करें -> libjpeg.a फ़ाइल
  7. संकलित शामिल परियोजना। यह किसी और libjpeg लिंकर त्रुटियों को नहीं दिखाना चाहिए।
+0

यह मैनुअल अच्छा है! धन्यवाद! मैंने अपनी परियोजना में/opt/libjpeg-turbo/lib से libjpeg.a को बस जोड़ दिया है। लेकिन मुझे परियोजना सेटिंग्स में बिटकोड विकल्प अक्षम करना पड़ा। क्योंकि, जैसा कि मैंने समझा, कि lib को बिटकोड विकल्प के बिना संकलित किया गया है। –

+0

मैंने हाल ही में आईओएस पर ओपनसीवी का पता लगाने के लिए स्थापित किया और पाया कि libjpeg.a को मेरे प्रोजेक्ट में जोड़ने के लिए अनुशंसित निर्देश समस्या को ठीक नहीं करता है। अपरिभाषित प्रतीकों के बजाय मुझे कई डुप्लिकेट प्रतीकों मिले। मैं इसे ठीक करने के लिए एक हैक के साथ आया, जो ओपनसीवी स्रोतों को डाउनलोड करना और निम्नलिखित 8 फाइलों को पकड़ना और उन्हें अपने आईओएस प्रोजेक्ट में जोड़ना था। इसका jmemansi.c द्वारा निर्यात किए गए प्रतीकों को परिभाषित करने का प्रभाव पड़ा। मुझे एक्सकोड या बिल्डिंग सिस्टम के बारे में पर्याप्त जानकारी नहीं है जो ओपनसीवी में अधिक सुरुचिपूर्ण फिक्स बनाने के लिए उपयोग की जाती है, लेकिन मैंने सोचा कि मैं उस समाधान के साथ गुजरता हूं जो मेरे लिए काम करता है। –

+0

फ़ाइलें मैं अपने प्रोजेक्ट में नकल की सूची: jconfig.h jinclude.h \t memsys.h jpegint.h jerror.h memansi.c jmorecfg.h jpeglib.h –

0

एक ही मुद्दा मैं खुले सीवी का सामना करना पड़ और उस का समाधान अपने प्रोजेक्ट की मेरी त्रुटियों को नीचे एक उपयोगी लिंक मिल गया :

http://blog.csdn.net/iOSLearner_Nana/article/details/45174365

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