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

标签 c++ gcc c++11 android-ndk smart-pointers

我正在使用 android NDK r8d 和 eclipse Juno。我正在尝试在原生 android 项目中编译使用 C++11 内容的 C++ 代码,例如 mutexlock_guardshared_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 一起工作,那就太好了。

最佳答案

关于你的第一个问题:

  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++”部分。

关于c++ - 如何用android ndk和eclipse编译c++11代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15269496/

相关文章:

c++ - 有符号算术

c++ - 返回引用时,gcc 将 0x30 添加到 %eax

c++ - 如何避免对 GUI 背后的数据使用全局变量?

c++ - unique_ptr 的设计头痛

c++ - 使用 std::function 参数重载函数:为什么从未调用 const 方法?

c++ - CMake - 创建一个静态库

c++ - 为什么这会起作用以及如何起作用?非静态 Qt 对象

c++ - “make_error_code”未在此范围内声明,并且在实例化时通过参数相关查找未找到任何声明

c - 意外的链接描述文件符号地址

c++ - 指向同一个地址的两个指针