2011-08-08 15 views
17

मैं लिनक्स में ग्रहण का उपयोग कर रहा एक C++ आवेदन को विकसित करने और मैं निम्नलिखित कोड लाइनों से "हल नहीं किया जा सकता है प्रतीक 'वेक्टर'" इस संपादक एनोटेशन त्रुटि हो रही है हल नहीं किया जा सकता हैत्रुटि, प्रतीक 'वेक्टर'

std::vector<unsigned char> buffer; 

मुझे लगता है कि कुछ पुस्तकालय गुम है या पथ सेट नहीं हैं। मैंने स्पष्ट रूप से एसटीएल डाउनलोड किया लेकिन इसका कोई उपयोग नहीं हुआ। क्या मुझे अपने लिनक्स पर जीसीसी स्थापित करना है?

+1

मुझे संदेह है कि समस्या यह है कि आपने 'स्पष्ट रूप से एसटीएल डाउनलोड किया' है, जो आवश्यक नहीं होना चाहिए और शायद आपने उस समय कुछ गलती की है। – john

+2

यदि पथ सेट नहीं हैं तो आपको '# शामिल करें ' पर एक त्रुटि प्राप्त करनी चाहिए। आपके आउटपुट में * पहली * त्रुटि क्या है? – molbdnilo

+0

क्या आपने वेक्टर समेत हैलो वर्ल्ड सी ++ फ़ाइल को जोड़ने के लिए ग्रहण के बाहर जीसीसी या सीसी का उपयोग करने का प्रयास किया था? मैं उसे एक शॉट दूंगा। – Sid

उत्तर

2

आपको अपने कार्यक्रम में एसटीएल वेक्टर परिभाषा शामिल करने की आवश्यकता है। रखो:

#include <vector> 

आपकी फ़ाइल के शीर्ष पर और इसे काम करना चाहिए।

+0

मैंने इसे शीर्ष पर शामिल किया है लेकिन –

+0

का उपयोग नहीं किया गया है यह अजीब है .. क्या आप अपनी कमांड लाइन पोस्ट कर सकते हैं? – StevieG

+2

एर .. यदि आप एक पोस्ट को डाउनवोट करने जा रहे हैं, तो कम से कम यह समझाने की सभ्यता है कि क्यों ... – StevieG

1
#include<vector> 

शीर्ष पर शामिल किया जाना चाहिए।

+0

यह भी काम नहीं कर रहा है –

1
#include <vector> 

इसके अलावा, std :: वेक्टर, टेम्पलेट प्रकार है, इसलिए आप की तरह

std::vector<char> buffer; 
1

मुझे लगता है कि कुछ पुस्तकालय याद आ रही है या पथ सेट नहीं हैं इसका इस्तेमाल करने के लिए है।

हाँ, यह एक लिंकर त्रुटि की तरह लगता है। लिंकर्स प्रतीकों से निपटते हैं।

मैंने स्पष्ट रूप से एसटीएल डाउनलोड किया लेकिन इसका कोई उपयोग नहीं किया गया।

उम्मीद है कि आप libstdC++, सी ++ मानक पुस्तकालय के जीएनयू के कार्यान्वयन का मतलब है, और शायद आपको यह नहीं करना चाहिए था। आपका टूलचेन उचित stdlib कार्यान्वयन के साथ आता है।

क्या मुझे अपने लिनक्स पर जीसीसी इंस्टॉल करना है?

शायद बुद्धिमान। और इस स्थापना को मानक पुस्तकालय को संभालने दें।

इसके अलावा, ऑफ मौका है कि आप अपने संकलन कमांड लाइन के साथ खेल रहे हैं पर, g++आह्वान करने के लिए याद नहींgcc; g++ स्वचालित रूप से सी ++ रनटाइम और stdlib कार्यान्वयन में लिंक करता है, जबकि gcc सी

+0

@UmairZaman: ठीक है? –

18

ग्रहण में, प्रोजेक्ट नाम पर राइट-क्लिक करें ... इंडेक्स का चयन करें ... पुनर्निर्माण करें।

+0

एफवाईआई - रीफ्रेश के समान नहीं (मैंने सोचा था कि यह था)। – Cookster

+0

जोड़ना #include मेरे लिए काम किया –

4

मुझे एक ही समस्या थी। मेरा मानना ​​है कि समस्या उत्पन्न होती है कि कैसे std :: स्वत: पूर्णता अद्यतन की जाती है। ग्रहण इसे पथ और प्रतीकों से प्राप्त करना चाहिए, लेकिन यह छोटी हो सकती है। मुझे जीसीसी (इस प्रकार, जी ++) को अपग्रेड करने के बाद सभी ग्रहण सेटिंग्स को साफ़ करना पड़ा, क्योंकि आप लिनक्स में हैं, यह आपके घर फ़ोल्डर ~/.clipsese/के अंतर्गत है।

इस प्रकार

,

1) ग्रहण की सफाई ~/.eclipse/के बाद फिर से शुरू कर दिया।

2) जांच की है कि पथ और प्रतीकों (प्रोजेक्ट> सामान्य> पथ और प्रतीकों पर राइट-क्लिक के तहत) सभी अपग्रेड किए गए जीसीसी और सी ++ में निर्देशिका शामिल हैं (वेक्टर नीचे होना चाहिए।/ जीसीसी/संस्करण/शामिल/सी ++/संस्करण /)

3) सूचकांक पुनर्निर्माण करें।

4) एक * .cpp फ़ाइल बनाई गई जिसमें * .h शामिल है जहां त्रुटि दिखाई दे रही है। इससे एक्लिप्स को * .h के लिए निर्भरता को पीछे हटाना होगा।

5) सूचकांक पुनर्निर्माण और/या आवश्यकतानुसार कुछ बार पुनरारंभ करें, अब मैं std :: स्वत: पूर्णता के अंत में वेक्टर देख सकता हूं।

enter image description here (चित्र देखें)

आशा है कि यह मदद करता है!

+3

मुझे लगता है कि यह उत्तर सही है। प्रश्न इस अन्य हल पद से संबंधित है: http://stackoverflow.com/questions/10803685/eclipse-cdt-symbol-cout-could-not-be-resolved। मैंने @wgodoy (उल्लिखित पोस्ट का उपयोग करके) द्वारा समझाया गया एक समान प्रक्रिया के साथ समस्या हल की। – jespestana

0

*.cpp फ़ाइल बनाई गई जिसमें *.h शामिल है जहां त्रुटि दिखाई दे रही है। इससे ग्रहण *.h के लिए निर्भरता को पीछे हटाना होगा।
मेरे लिए काम कर रहा है ...

2

देखें साथ ही इससे संबंधित प्रश्न: Eclipse CDT: Symbol 'cout' could not be resolved

मेरे लिए समस्या #include <vector> में कहीं नहीं है कि #include <bits/c++config> जो है एक अलग से पथ शामिल था #include <vector>

अर्थात्: /usr/include/c++/4.6/x86_64-linux-gnu

0

जोड़ना #वेक्टर> और नामस्थान का उपयोग कर एसटीडी; मेरी समस्या हल हो गई

0

मुझे पता है कि यह समस्या पहले ही हल हो चुकी है, लेकिन यह स्टील प्रकट होता है और गुगल इस पृष्ठ को शीर्ष परिणाम के रूप में देता है।

के लिए ग्रहण नियॉन का उपयोग लिनक्स मैं Quick Fix साथ इसे हल:

  • सही "वेक्टर" संपादक में पर क्लिक करें,
  • तो "त्वरित फिक्स"
0

अधिकतर आपके पास कुछ सिस्टम-विशिष्ट निर्देशिका निर्देशिका मील शामिल हैं आपकी सेटिंग्स में एसएसिंग जो सूचकांक के लिए iostream सही तरीके से पार्स करना असंभव बनाता है, इस प्रकार त्रुटियां। Index -> Search अनसुलझा के लिए प्रोजेक्ट के संदर्भ मेनू में शामिल है आपको अनसुलझा की सूची दी जाएगी जिसमें आप /usr/include में खोज सकते हैं और सी ++ में निर्देशिकाएं शामिल कर सकते हैं परियोजना गुणों में पथ और प्रतीक शामिल करें।

मेरी प्रणाली पर मुझे /usr/include/c++/4.6/x86_64-linux-gnubits/c++config.h को हल करने के लिए और कुछ और निर्देशिकाएं जोड़नी थीं।

निर्देशिका जोड़ने के बाद इंडेक्स (इंडेक्स -> पुनर्निर्माण) को पुनर्निर्माण करना न भूलें।

0

जाहिर है वेक्टर MinGW परिप्रेक्ष्य से सी ++ मानक टेम्पलेट लाइब्रेरी से संबंधित है।इसलिए

#include <vector> 

के अलावा हेडर फाइल समावेशन के बाद जोड़े

using namespace std; 

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