2010-10-15 11 views
7

मैं जब एक छोटे और सरल परियोजना है कि Xcode में <cmath> शामिल बनाने की कोशिश निम्न त्रुटियों मिलती है:xcode में जब सहित cmath त्रुटि मिलती है: ':: acos' घोषित नहीं किया गया है आदि

cmath: '*' has not been declared
'::acos' has not been declared
In file included from /Xcode4/Projects/libraryLAFMath/Classes/libraryLAFMath.cp
In file included from /Xcode4/Projects/libraryLAFMath/Classes/libraryLAFMath.h
'::acos' has not been declared in /Xcode4/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/usr/include/c++/4.2.1/cmath
...

त्रुटि लॉग अन्य सभी गणित कार्यों के बारे में भी शिकायत करता है, sin, pow, आदि, केवल acos नहीं। मैंने cmath स्रोत कोड के अंदर देखा और यह math.h, यानी ::acos आदि से वैश्विक रूप से परिभाषित संबंधित गणित कार्यों का संदर्भ देता है। चूंकि रूट त्रुटि ::acos के अस्तित्व के बारे में शिकायत करती है, तो कोई यह मान लेगा कि math.h नहीं मिला, लेकिन ए) यह मौजूद है , और बी) मुझे शिकायत करने में एक अलग त्रुटि मिलेगी कि math.h नहीं मिला।

libraryLAFMath.cp:

स्रोत कोड इस प्रकार है

#include "libraryLAFMath.h" 

libraryLAFMath.h:

#include <cmath> 
struct libraryLAFMath { 
    void test() { 
     double a = std::acos(0); 
    } 
}; 

अब, मैं एक बाहरी स्रोत cmath का उपयोग करता है से एक अन्य परियोजना है और ठीक संकलित करता है। मैंने इन दो परियोजनाओं के बीच बिल्ड सेटिंग्स की तुलना करने की कोशिश की लेकिन वे काफी समान हैं। मैं एलएलवीएम जीसीसी 4.2 कंपाइलर का उपयोग कर रहा हूं, लेकिन जीसीसी 4.2 का उपयोग करते समय समान परिणाम प्राप्त करें, इसलिए यह एक संकलक सेटिंग्स समस्या नहीं है जो मुझे विश्वास है।

मैं एक्सकोड विकास के लिए नया हूं और किसी भी मदद की सराहना की जाती है।

उत्तर

12

एक फ़ाइल मैं अपने प्रोजेक्ट एक राजधानी M साथ Math.h नामित में नहीं है, और यह संकलक भ्रमित हो जाता है लगता है और Math.h बजाय math.h शामिल करने के लिए प्रयास करता है।

+0

अधिक जानकारी जोड़ने के लिए अपने प्रश्न को संपादित करें, इसका उत्तर न दें। –

+2

@ डेलन, यह मेरे जवाब की तरह लगता है, अतिरिक्त विवरण नहीं, इसलिए कोई समस्या नहीं ... – bdonlan

+0

एचएम, मुझे लगता है। उसके लिए माफ़ करना। –

1

मैं विषय पर एक वैकल्पिक धागे पर इस उत्तर पोस्ट, लेकिन यह यहाँ सहित लायक के रूप में अच्छी तरह से सोचा:

मैं इस समस्या थी - यह मुझे पागल गाड़ी चला रहा था, लेकिन मैं कारणों का पता लगा पता लगाया, और यह एक था इस मुद्दे पर मैंने जो देखा है उससे थोड़ा अलग है।

इस मामले में, सामान्य cmath हेडर (या math.h - सी ++ या सी में त्रुटि और समाधान होता है) आर्किटेक्चरल विशिष्ट गणित उपशीर्षक को शामिल करने के लिए वास्तुशिल्प वातावरण स्विच करता था। आर्किटेक्चर स्विच (पर्यावरण चर) को परिभाषित नहीं किया गया था, इसलिए यह वास्तव में गणित कार्यों को परिभाषित करने वाले शीर्षकों सहित पेंटिंग और वास्तव में नहीं था।

तो वास्तव में एक ही गणित.h या cmath.h था, और इसे शामिल किया गया था, लेकिन यह गणित कार्यों को प्राप्त करने के लिए पर्याप्त नहीं था। मेरे मामले में, आर्किटेक्चरल वैरिएबल को परिभाषित करने के बजाय, मुझे सही उप गणित शीर्षकों का स्थान मिला और उन्हें मेरे संकलन पथ में जोड़ा गया। फिर परियोजना काम किया!

यह एक ऐसा मुद्दा प्रतीत होता है जो ओएस-एक्स में लिनक्स परियोजनाओं को पोर्ट करते समय बहुत कुछ आता है। मुझे लगता है कि यह किसी भी समय एक परियोजना को betwee प्लेटफार्मों में स्थानांतरित किया जा सकता है जैसे मानक लाइब्रेरी हेडर अलग-अलग व्यवस्थित किए जाते हैं।

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