2011-09-25 14 views
8

मैं xcode 4.0 में एक कोको अनुप्रयोग संकलित करने के लिए कोशिश कर रहा हूँ और मैं इस त्रुटि मिल रही है ...कोको अनुप्रयोग में #include <string> साथ त्रुटियों संकलित

fatal error: 'string' file not found 

... जब .pch को संकलित करने के लिए कोशिश कर रहा है इस लाइन पर फ़ाइल:

#include <string> 

मेरे पास एक और xcode प्रोजेक्ट है जो एक ही काम करता है, लेकिन त्रुटि नहीं मिलती है। मैंने कुछ अलग-अलग बिल्ड सेटिंग्स को खराब कर दिया है, लेकिन मुझे कोई नहीं मिला। केवल अंतर यह है कि ओके संकलित करने वाली परियोजना को कमांड लाइन प्रोजेक्ट के रूप में शुरू किया गया था, न कि कोको परियोजना नहीं, बल्कि बिल्ड सेटिंग समान है।

लक्ष्य ओएस मैक ओएस एक्स 10.6

जब precompiled शीर्ष लेख संकलन और अन्य फ़ाइलों में से किसी को नहीं मिलता है त्रुटि होता है। संकलन संस्करण में एकमात्र ढांचा है जो फाउंडेशन.फ्रेमवर्क है और गैर-संकलनशील व्यक्ति के पास भी है।

यह एक परियोजना में क्यों नहीं ढूंढ रहा है, न कि दूसरे? कोई सलाह?

+0

आपका ऐप किस प्रोग्रामिंग भाषा में लिखा गया है? '' एक सी ++ चीज नहीं है, उद्देश्य-सी चीज नहीं है? –

+1

आप उद्देश्य-सी ++ में एसटीएल का उपयोग कर सकते हैं। बस अपनी फाइलों का नाम दें। मिमी। मैंने पूरी तरह से इस परियोजना के साथ एक ताजा कोको ऐप टेम्पलेट से शुरू किया और यह अभी ठीक काम करता है। –

उत्तर

0

string एक सी ++ हेडर (std :: string के लिए) है। यदि आप strcpy जैसी चीजों की तलाश में हैं तो आपको string.h

13

अपनी स्रोत फ़ाइलों का विस्तार क्या करना है? यदि यह ".m" है, तो इसे obj-cpp ".mm" में बदलने का प्रयास करें, ताकि Xcode सही भाषा को कम कर दे। या बस डाल C++ - अंदर "#ifdef __cplusplus" ब्लॉक

अद्यतन

गार्ड परियोजना में संकलित प्रत्येक भाषा के लिए मौजूद हैं, क्योंकि इस विशिष्ट शामिल PCH में है चाहिए विशिष्ट हेडर। IOW, अगर यह सभी C++ और/या objC++ थे तो कोई त्रुटि नहीं होगी। जाहिर है, कम से कम एक फ़ाइल है जो सी ++ को पहचान नहीं पाती है (उदाहरण के लिए सी या ओबीजेसी स्रोत भी लक्ष्य में संकलित किए जाते हैं)। इसलिए, आप बस इसे इस तरह से संरक्षित करते हैं:

// MONPrefix.pch 

#ifdef __cplusplus 
#include <string> 
#endif 

// same for objc, so your C and C++ sources compile with no error: 
#ifdef __OBJC__ 
#include <Foundation/Foundation.h> 
#endif 
+0

+1 * "बस सी ++ - विशिष्ट हेडर को" #ifdef __cplusplus "ब्लॉक" * के अंदर रखें - * सही समाधान है - लेकिन परियोजना में संकलित प्रत्येक भाषा के लिए गार्ड मौजूद होना चाहिए क्योंकि यह विशिष्ट पीएच में है। iow, अगर यह सभी C++ और/या objC++ थे तो कोई त्रुटि नहीं होगी। जाहिर है, कम से कम एक फ़ाइल है जो सी ++ (उदा। सी या ओबीजेसी) को पहचान नहीं पाती है। खुद को अपडेट कर देगा - अब मुझे यह महीना पुराना है :) – justin

+0

इससे मुझे यह पता लगाने में मदद मिली कि कोकोस 2 डी-एक्स प्रोजेक्ट के लिए प्रीफिक्स.pch को कैसे व्यवस्थित किया जाए। "#ifdef __cplusplus" में C++ विशिष्ट सामग्री को लपेटना एक आकर्षण की तरह काम करता है। –

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