【问题标题】:How to compile c++11 code with android ndk and eclipse?如何用android ndk和eclipse编译c++11代码?
【发布时间】:2013-02-22 13:13:57
【问题描述】:

我正在使用 android NDK r8d 和 eclipse Juno。我正在尝试在 Eclipse 的原生 android 项目中编译使用 C++11 的 C++ 代码,如 mutexlock_guardshared_ptr 等。

我收到如下错误:

“错误:‘shared_ptr’不是‘std’的成员”

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

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

我将"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__" 来解决它们,但我就是不知道该放在哪里。

所以,如果有人能发布一个完整解释如何编译和使 eclipse 与 C++11 一起工作的答案,那就太好了。

【问题讨论】:

  • 阅读 NDK 文档,这是不可能的。
  • stackoverflow.com/questions/14532057/… 看来他们管理好了
  • 你用哪个编译器来编译c++?​​
  • @naxchange 我正在使用 Android NDK 附带的工具链,我相信它是 gcc/g++。正如我所写,我将其设置为"NDK_TOOLCHAIN_VERSION=4.7"。有一个关于它的问题here

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


【解决方案1】:

关于你的第一个问题:

  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,我也没有“符号/GNU C++”部分,并且没有定义“GXX_EXPERIMENTAL_CXX0X”索引器不会识别 c++11东西。你有没有设法用 ndk 编译你的代码?
  • 是的,(C++11) 代码可以使用 NDK 正常编译。问题仅在于 Eclipse 内部的索引级别。
  • 关于在 Eclipse Juno 中修复索引器的问题,我在“stackoverflow.com/questions/9375708/…”上发布了一个变通方法 hack
【解决方案2】:

我发现在我启动eclipse之前导出一个环境变量NDK_TOOLCHAIN_VERSION=4.8可以解决这个问题。

Eclipse 使用 ndk 的默认工具链版本 4.6,如果没有定义 NDK_TOOLCHAIN_VERSION,并且 gcc 巫婆这个版本不支持所有 c++11 的未来如多线程等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2012-11-16
    相关资源
    最近更新 更多