如何使用android ndk和eclipse编译c ++ 11代码?

Dea*_*sie 15 c++ gcc smart-pointers android-ndk c++11

我正在使用android NDK r8d和eclipse Juno.我试图编译它使用C++ 11的东西像C++代码mutex,lock_guard,shared_ptr等在Eclipse一个原生Android项目.

我得到的错误如下:

"错误:'shared_ptr'不是'std'的成员"

"致命错误:互斥:没有这样的文件或目录"

我在这里遇到了类似的问题.它似乎对他们有效,但那里的解释并不完整,所以我无法让它为我工作.

我加入"NDK_TOOLCHAIN_VERSION=4.7"Application.mk"LOCAL_CFLAGS += -std=c++11"Android.mk文件中.它仍然没有编译.

在上面的链接中它说:

"确保标准库包含路径(如/android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include)在目标设置中."

我如何以及在何处插入?

我也在eclipse IDE中遇到错误(在编译之前在源代码上).我知道我应该定义"__GXX_EXPERIMENTAL_CXX0X__"解决它们,但我只是不知道把它放在哪里.

所以,如果有人能够发布一个答案,并详细解释如何编译和使用C++ 11进行eclipse工作,那就太好了.

Ari*_*lka 6

关于你的第一个问题:

  1. 转到项目>属性> C/C++常规/路径和符号

  2. 在"包含"选项卡中,添加正确的目录,例如/android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include

关于你的第二个问题,我也在寻找答案.目前尚不清楚如何在Eclipse中定义GXX_EXPERIMENTAL_CXX0X宏.

有人说它应该"作为预定义的宏添加到索引器",但看起来我们都找不到实现它的方法......

我在其他地方读到它应该被添加到"C/C++ General/Paths and Symbols/Symbols/GNU C++"中,但我在我的Indigo版本中找不到"Symbols/GNU C++"部分.

  • 对于在Eclipse Juno中修复索引器的问题,我在"http://stackoverflow.com/questions/9375708/eclipse-indexer-errors-when-using-stl-with-android-ndk/上发布了一个解决方法. 15782177#15782177" (2认同)