How to compile c++11 code with android ndk and eclipse?

12,299

Regarding your first question:

  1. Go to Project > Properties > C/C++ General / Paths and Symbols

  2. In the "Includes" tab, add the proper directory, e.g. /android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include

Regarding your second question, I'm also looking for an answer. It is absolutely not clear how to define the GXX_EXPERIMENTAL_CXX0X macro in Eclipse.

Some say that it should be "added as a predefined macro to the indexer", but it looks like we both could not find a way to implement that...

I have read elsewhere that it should be added to "C/C++ General / Paths and Symbols / Symbols / GNU C++" but I can't find the "Symbols / GNU C++" part in my version of Indigo.

Share:
12,299
DeathlessHorsie
Author by

DeathlessHorsie

Updated on June 05, 2022

Comments

  • DeathlessHorsie
    DeathlessHorsie almost 2 years

    I'm using android NDK r8d, and eclipse Juno. I'm trying to compile C++ code which uses C++11 stuff like mutex, lock_guard, shared_ptr, etc. in a native android project in eclipse.

    I get errors like:

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

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

    I came across a similar question here. It seems to work for them, but the explanation there is not complete so I can't get it to work for me.

    I added "NDK_TOOLCHAIN_VERSION=4.7" to the Application.mk and "LOCAL_CFLAGS += -std=c++11" to Android.mk file. Still, it doesn't compile.

    In the link above it says:

    "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."

    How and where do I insert it?

    I also get errors in eclipse IDE (on the source, before compiling). I know I should define "__GXX_EXPERIMENTAL_CXX0X__" to resolve them but I just don't know where to put it.

    So, if someone could post an answer with a full explanation of how to compile and make eclipse work with C++11 it would be great.

  • DeathlessHorsie
    DeathlessHorsie about 11 years
    I use eclipse Juno and I also don't have the "Symbols / GNU C++" part, and without defining "GXX_EXPERIMENTAL_CXX0X" the indexer wont recognize the c++11 stuff. Did you managed to compile your code with the ndk?
  • Ariel Malka
    Ariel Malka about 11 years
    Yes, the (C++11) code compiles fine with the NDK. The problem is only at the level of indexing inside Eclipse.
  • Shervin Emami
    Shervin Emami about 11 years
    For the problem of fixing the indexer in Eclipse Juno, I posted a work-around hack at "stackoverflow.com/questions/9375708/…"