我正在使用 android NDK r8d 和 eclipse Juno。我正在尝试在原生 android 项目中编译使用 C++11 内容的 C++ 代码,例如 mutex
、lock_guard
、shared_ptr
等在 eclipse 中。
我收到如下错误:
"error: 'shared_ptr' is not a member of 'std'"
"fatal error: mutex: No such file or directory"
我遇到了一个类似的问题 here .它似乎对他们有用,但那里的解释不完整,所以我无法让它对我有用。
我将 "NDK_TOOLCHAIN_VERSION=4.7"
添加到 Application.mk
和 "LOCAL_CFLAGS += -std=c++11"
到Android.mk
文件。仍然无法编译。
在上面的链接中说:
"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."
如何以及在何处插入?
我还在 Eclipse IDE 中遇到错误(在源代码上,在编译之前)。我知道我应该定义 "__GXX_EXPERIMENTAL_CXX0X__"
来解决它们,但我只是不知道把它放在哪里。
所以,如果有人可以发布一个答案,并完整解释如何编译和使 eclipse 与 C++11 一起工作,那就太好了。
最佳答案
关于你的第一个问题:
转到项目 > 属性 > C/C++ 常规/路径和符号
在“包含”选项卡中,添加正确的目录,例如 /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++”部分。
关于c++ - 如何用android ndk和eclipse编译c++11代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15269496/