2012-11-04 18 views
5

मैं wxwidget पुस्तकालय का उपयोग करें और मैं निम्नलिखित समस्या है:XCode 4.5 'tr1/type_traits' फ़ाइल नहीं मिली

#if defined(HAVE_TYPE_TRAITS) 
    #include <type_traits> 
#elif defined(HAVE_TR1_TYPE_TRAITS) 
    #ifdef __VISUALC__ 
     #include <type_traits> 
    #else 
     #include <tr1/type_traits> 
    #endif 
#endif 
यहाँ

# शामिल नहीं मिला है। मैं ऐप्पल एलएलवीएम कंपाइलर 4.1 का उपयोग करता हूं। (सी ++ 11 बोली के साथ)। यदि मैं एलएलवीएम जीसीसी 4.2 कंपाइलर पर स्विच करता हूं तो मुझे कोई त्रुटि नहीं है, लेकिन मुख्य समस्या यह है कि सभी सी ++ 11 समावेशन काम नहीं करेंगे।

मैं या तो जीसीसी कंपाइलर का उपयोग कैसे कर सकता हूं, लेकिन सी ++ 11 मानक के साथ या एलएलवीएम को यह पाया जा सकता है?

किसी भी मदद की वास्तव में सराहना की जाएगी।

उत्तर

12

मुझे लगता है कि आपके पास "सी ++ मानक लाइब्रेरी" "libC++" पर सेट है। यदि ऐसा है, तो आप <type_traits> चाहते हैं, <tr1/type_traits> नहीं। libC++ आपको एक सी ++ 11 लाइब्रेरी देता है, जबकि libstdC++ (जो एक्सकोड 4.5 में भी डिफ़ॉल्ट है) आपको TR1 समर्थन के साथ एक C++ 03 लाइब्रेरी देता है।

आप चाहते हैं, तो आप स्वत: पता लगा सकते हैं जो पुस्तकालय आप के साथ उपयोग कर रहे हैं:

#include <ciso646> // detect std::lib 
#ifdef _LIBCPP_VERSION 
// using libc++ 
#include <type_traits> 
#else 
// using libstdc++ 
#include <tr1/type_traits> 
#endif 

या शायद आपके मामले में:

#include <ciso646> // detect std::lib 
#ifdef _LIBCPP_VERSION 
// using libc++ 
#define HAVE_TYPE_TRAITS 
#else 
// using libstdc++ 
#define HAVE_TR1_TYPE_TRAITS 
#endif 
+0

धन्यवाद, यह हल समस्या – Aranir

+0

धन्यवाद - :-) एक ही समस्या थी और GNU पुस्तकालय के लिए बदल रहा है मेरे लिए इसे हल –

0

थोड़ा ऊपर कोड संशोधित किया संकलक से बचने के लिए शिकायतों:

बस से पहले #ifdefined (HAVE_TYPE_TRAITS) strvararg.h में निम्नलिखित पेस्ट

#include <ciso646> // detect std::lib 
#ifdef _LIBCPP_VERSION 
// using libc++ 
#ifndef HAVE_TYPE_TRAITS 
#define HAVE_TYPE_TRAITS 1 
#endif 
#else 
// using libstdc++ 
#ifndef HAVE_TR1_TYPE_TRAITS 
#define HAVE_TR1_TYPE_TRAITS 1 
#endif 
#endif 
0

यह वह आदेश है जिसका उपयोग मैं libC++ (LLVM C++ मानक लाइब्रेरी) के विरुद्ध wxwidgets बनाने के लिए करता था। बाद में Yosemite पर काम करना चाहिए और (कम से कम जब तक एप्पल फिर से सब कुछ टूट जाता है):

mkdir build-cocoa-debug 
cd build-cocoa-debug 
../configure --enable-debug --with-macosx-version-min=10.10 
make -j8 #This allows make to use 8 parallel jobs