2013-03-07 5 views
15

मैं एंड्रॉइड एनडीके आर 8 डी, और ग्रहण जूनो का उपयोग कर रहा हूं। मैं सी ++ कोड को संकलित करने की कोशिश कर रहा हूं जो ग्रहण में देशी एंड्रॉइड प्रोजेक्ट में सी ++ 11 सामान जैसे mutex, lock_guard, shared_ptr आदि का उपयोग करता है।एंड्रॉइड एनएनडीके और ग्रहण के साथ सी ++ 11 कोड को संकलित कैसे करें?

"error: 'shared_ptr' is not a member of 'std'"

"fatal error: mutex: No such file or directory"

मैं एक ऐसी ही सवाल here भर में आया था:

मैं की तरह त्रुटियों मिलता है। ऐसा लगता है कि उनके लिए काम करना है, लेकिन स्पष्टीकरण पूरा नहीं हुआ है इसलिए मैं इसे मेरे लिए काम नहीं कर सकता।

मैं Android.mk फाइल करने के लिए Application.mk और "LOCAL_CFLAGS += -std=c++11" को "NDK_TOOLCHAIN_VERSION=4.7" गयी। फिर भी, यह संकलित नहीं करता है।

यह ऊपर के लिंक में कहते हैं:

"Be sure that the standard library include path (like /android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include) is in the target settings."

कैसे और मैं इसे जहां डालूँ?

मुझे एक्लिप्स आईडीई (स्रोत पर, संकलन से पहले) में त्रुटियां भी मिलती हैं। मुझे पता है कि मुझे उन्हें हल करने के लिए "__GXX_EXPERIMENTAL_CXX0X__" परिभाषित करना चाहिए, लेकिन मुझे नहीं पता कि इसे कहां रखा जाए।

तो, अगर कोई संकलन और सी ++ 11 के साथ ग्रहण करने के तरीके के बारे में पूर्ण स्पष्टीकरण के साथ उत्तर पोस्ट कर सकता है तो यह बहुत अच्छा होगा।

+0

एनडीके दस्तावेज़ पढ़ें, यह संभव नहीं है। – Geoffroy

+0

http://stackoverflow.com/questions/14532057/smart-pointers-not-working-with-android-ndk-r8 ऐसा लगता है कि उन्होंने इसे – DeathlessHorsie

+0

प्रबंधित किया है जो आप C++ के लिए उपयोग कर रहे हैं? – naxchange

उत्तर

6

अपने पहले प्रश्न के बारे में:

  1. प्रोजेक्ट> गुण> C/C++ जनरल/पथ और प्रतीकों

  2. "शामिल" टैब, उचित निर्देशिका जोड़ने के लिए, उदा में /android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include

अपने दूसरे प्रश्न के बारे में, मैं भी एक जवाब की तलाश में हूँ। यह बिल्कुल स्पष्ट नहीं है कि ग्रहण में GXX_EXPERIMENTAL_CXX0X मैक्रो को कैसे परिभाषित किया जाए।

कुछ लोग कहते हैं कि यह "इंडेक्सर करने के लिए एक पूर्व-निर्धारित मैक्रो के रूप में जोड़ा" जाना चाहिए, लेकिन लगता है कि हम दोनों कि लागू करने के लिए एक तरह से नहीं मिल सका यह लग रहा है ...

मैं कहीं पढ़ा है कि यह होना चाहिए "सी/सी ++ सामान्य/पथ और प्रतीक/प्रतीक/जीएनयू सी ++" में जोड़ा गया है लेकिन मुझे इंडिगो के मेरे संस्करण में "प्रतीक/जीएनयू सी ++" भाग नहीं मिल रहा है।

+0

मैं ग्रहण जूनो का उपयोग करता हूं और मेरे पास "प्रतीक/जीएनयू सी ++" भाग नहीं है, और "__GXX_EXPERIMENTAL_CXX0X__" को परिभाषित किए बिना इंडेक्सर C++ 11 सामान को पहचान नहीं पाएगा। क्या आपने एनडीके के साथ अपना कोड संकलित करने में कामयाब रहे? – DeathlessHorsie

+0

हां, (सी ++ 11) कोड एनडीके के साथ ठीक संकलित करता है। समस्या केवल ग्रहण के अंदर अनुक्रमण के स्तर पर है। –

+2

एक्लिप्स जूनो में इंडेक्सर को ठीक करने की समस्या के लिए, मैंने "http://stackoverflow.com/questions/9375708/eclipse-indexer-errors-when-using-stl-with-android-ndk पर एक कार्य-आसपास हैक पोस्ट किया/15782177 # 15782177 " –

0

मुझे ग्रहण शुरू करने से पहले एक पर्यावरण परिवर्तनीय निर्यात NDK_TOOLCHAIN_VERSION = 4.8 निर्यात मिलता है, इस समस्या को हल करने से पहले।

ग्रहण उपयोग NDK के डिफ़ॉल्ट toolchain संस्करण 4.6, अगर NDK_TOOLCHAIN_VERSION को परिभाषित नहीं है, और जीसीसी डायन इस संस्करण सभी C++ 11 के भविष्य के लिए multithread और इतने पर की तरह समर्थन नहीं करता।

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