2011-10-05 26 views
10

का उपयोग करते समय एक्लिप्स त्रुटियों को ठीक करना मैं एंड्रॉइड ऐप विकसित करने के लिए ग्रहण का उपयोग कर रहा हूं जो एनएनडीके का भी उपयोग करता है। मैं अपने अनुप्रयोग में वैक्टर और मैं आवश्यक सामान किया है उन्हें सहितएंड्रॉइड एनडीके और std :: वेक्टर

APP_STL से प्राप्त करने के लिए: = stlport_static

मेरी Application.mk

सब कुछ में काम कर रहा है ठीक यह संकलित करता है तथा रन लेकिन ग्रहण रहता है जब मैं वैक्टर

std::vector<int> blah 

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

मैं जोड़ दिया है $ {NDKROOT}/स्रोतों/CXX-STL/gnu-libstdC++/शामिल

के तहत सी ++ जनरल अपने प्रोजेक्ट config में -> पथ और प्रतीक -> शामिल

यह निराकरण #include <vector> ठीक है (इससे पहले कि मैंने उपरोक्त पथ जोड़ा है, इसके लिए मुझे एक त्रुटि थी) लेकिन मुझे अभी भी वैक्टर का उपयोग करके त्रुटियां मिलती हैं।

मुझे इस के लिए त्रुटियां रोकने के लिए ग्रहण कैसे प्राप्त किया जा सकता है?

संपादित करें:

उदाहरण त्रुटि: Symbol 'vector' could not be resolved

संपादित करें 2:

मैं

using namespace std; 

और फिर जोड़ने के लिए वेक्टर blah उपयोग करने की कोशिश और कहा कि कोई दूसरी त्रुटि का कारण बनता है:

Invalid template arguments

+1

आप अपने प्रश्न में "त्रुटि" शब्द का 7 बार उल्लेख करते हैं, लेकिन यह कहने में असफल रहता है * वास्तविक त्रुटि क्या है *! – richq

+0

आप सही हैं मैंने विशिष्ट त्रुटियों के साथ प्रश्न को अद्यतन किया है। – nkassis

+0

आह, ठीक है। मुझे लगता है कि मुझे पता है कि समस्या क्या है, लेकिन मुझे नहीं पता कि समाधान क्या है। यह * लगता है * आप जावा और सी ++ मिश्रण कर रहे हैं, लेकिन सी ++ भाग खुद को थोड़ा उलझन में मिला है। सीधी सी के साथ भी यही बात हुई। मैंने छोड़ दिया और विम वापस चला गया, लेकिन अगर आप एक्लिप्स से चिपकना चाहते हैं तो यह बिल्कुल सहायक नहीं है। – richq

उत्तर

13

I've added ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/include

In my project config under C++ General -> Paths and Symbols -> include

हाँ, यही वह है। मैंने एक ही परिणाम के साथ इसे जोड़ने की कोशिश की है। हालांकि, अगर आप जोड़ने stl_port हेडर

${NDKROOT}/sources/cxx-stl/stlport/stlport 

यह चाल करेंगे। बेशक

APP_STL := stlport_static 

को बदलने के लिए आवश्यक नहीं है क्योंकि यह केवल ग्रहण सूचकांक में काम करता है। यह उपयोगी होगा जब तक कि आप gnu-libstdC++ में मौजूद किसी चीज़ का उपयोग करने जा रहे हैं और stl-port मौजूद नहीं है।

+0

हम्म, मैं स्टर्लपोर्ट और $ {NDKROOT}/स्रोत/cxx-stl/stlport/stlport के पथ का उपयोग कर रहा हूं लेकिन मुझे अभी भी त्रुटि मिल रही है: प्रतीक 'वेक्टर' को हल नहीं किया जा सका – j00hi

2

Blockquote

मैं ग्रहण इंडिगो आरसी 2 पर मुकदमा कर रहा हूं।

मैं आवेदन में लाइन निम्नलिखित Android.mk

LOCAL_C_INCLUDES += ${NDKROOT}/sources/cxx-stl/stlport/stlport 

और जोड़ा गया में निम्नलिखित पंक्ति गयी।mk

APP_STL := stlport_static 

फिर स्वचालित रूप से मेरी NDK STLport पथ

Properties -> C++ General -> Paths and Symbols -> include

अच्छी किस्मत में जोड़ा गया! ^^

1

सबसे पहले, हम मानचित्र के साथ एक ही समस्या से मुलाकात की और सुझाव के अनुसार "पथ और प्रतीक" जोड़ने की कोशिश की, हालांकि यह अभी भी काम नहीं करेगा।

बाद में, बजाय

#include <map> 

हम

#include <stl/_map.h> 

त्रुटि दूर चला गया इस्तेमाल किया और फिर हम include <map> पर वापस आए। ग्रहण अब शिकायत नहीं करता है कि "प्रतीक हल नहीं किया जा सका"।

ऐसा लगता है कि ग्रहण में कैश है और किसी भी तरह से यह गड़बड़ हो सकता है जब तक कि आप विशेष रूप से प्रतीकों को खोजने के लिए सही जगह नहीं बताते।

0

मैं किस चरण में यह काम किया पर पता नहीं है, लेकिन:

  1. Application.mk को APP_STL := gnustl_static

  2. जोड़ें प्रोजेक्ट गुण> C/C++ जनरल शामिल -> पथ और प्रतीकों
    'NDK root path'/'your directory to android platform'/arch-arm/usr/include 'NDK root path'/sources/cxx-stl/gnu-libstdc++/4.9/include 'NDK root path'/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include/bits

  3. परियोजना गुणों में सभी चेतावनियों त्रुटियों को बंद करें-> सी ++ सामान्य-> कोड विश्लेषण।

  4. प्रोजेक्ट गुण-> सी ++ बिल्ड-> बिल्डर सेटिंग्स -> डिफॉल्ट बिल्ड कमांड का उपयोग अनचेक करें। कमांड सेट खाली बनाएँ।
  5. अगला एनडीके बिल्डर कॉन्फ़िगर करें: प्रोजेक्ट गुण-> बिल्डर्स-> नया-> प्रोग्राम और भरें नाम (आपका नाम निर्माण conf), स्थान (एनडीके रूट निर्देशिका का पथ), कार्य निर्देशिका (प्रोजेक्ट डीआईआर का पथ)। -> ताज़ा करें और विशिष्ट संसाधनों की जांच करें (प्रोजेक्ट में आपके libs फ़ोल्डर)। -> विकल्प विकल्प बनाएं प्रासंगिक संसाधनों के कार्य सेट को निर्दिष्ट करें और अपने स्रोत के साथ 'jni' फ़ोल्डर बदलें।

उबंटू 15.04 में काम किया। ग्रहण 3.8.1। एंड्रॉइड एनडीके आर 10 ई।

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