2012-10-23 10 views
5

नहीं मिल पा रहा है मुझे ओपनसीवी को शामिल करने वाली परियोजना बनाने के दौरान <ext/atomicity.h> की शिकायत करने में संकलक त्रुटि मिलती है। पर्यावरण आईओएस लक्ष्यीकरण एक्सकोड 4.5 है। यह सिम्युलेटर के लिए ठीक संकलित करता है लेकिन डिवाइस के निर्माण के दौरान विफल रहता है। यहाँ त्रुटि पाठ है:ओपनसीवी बिल्ड समस्या, ext/atomicity.h

/Users/Nick/projects/ios/opencv2.framework/Headers/core/operations.hpp:65:16: fatal error: 'ext/atomicity.h' file not found 
     #include <ext/atomicity.h> 

मैं opencv2.framework उपयोग कर रहा हूँ, cmake builusing, निर्देश here का उपयोग कर।

उत्तर

19

डिफ़ॉल्ट रूप से एक्सकोड 4.5 libc++ (LLVM C++ standard library with C++ 11 support) का उपयोग करने के लिए नई परियोजनाएं उत्पन्न करता है। लेकिन ओपनसीवी जीएनयू libstdc++ (GNU C++ standard library) के खिलाफ बनाया जाने की उम्मीद है। <ext/atomicity.h> स्पष्ट रूप से एक जीएनयू एक्सटेंशन है और यह एलएलवीएम libC++ मानक पुस्तकालय का हिस्सा नहीं है।

अपनी परियोजना की लक्षित सेटिंग्स में, C++ मानक लाइब्रेरी सेटिंग के लिए libstdc++ (GNU C++ standard library) चुनें।

बहुत संभावना है कि atomicity.h आवश्यकता को opencv से बाहर किया जा सकता है या अन्यथा एलएलवीएम libC++ संगत तरीके से किया जा सकता है। मैंने इसका पता नहीं लगाया लेकिन अगर कोई इस बात पर अंतर्दृष्टि रखता कि यह कैसे किया जा सकता है तो इसमें दिलचस्पी होगी।

1

मुझे लगता है कि यह दूसरी तरफ है। सी ++ झंडे (रिलीज़) -

: अजगर स्क्रिप्ट का आउटपुट को देखते हुए कि opencv2.framework बनाता है मैं इस मिल -stdlib = libC++ -headerpad_max_install_names -fvisibility = छिपा -fPIC -fvisibility-inlines-छिपा हुआ - DNDEBUG -O3 [...]

जो आप चाहते हैं कि सबसे अधिक संभावना नहीं है। तो आपको libstdC++ के साथ ढांचे को संकलित करने या उचित ऐप के साथ अपने ऐप को संकलित करने की आवश्यकता है। मैं जो देखता हूं उससे मुझे समस्याएं मिलती हैं जब libC++ के साथ मेरे ऐप्स बनाते हैं लेकिन यह मुझे हो सकता है।