【问题标题】:To include c++ headers in Eclipse for Android NDK project(Mac)在 Eclipse for Android NDK 项目(Mac) 中包含 c++ 头文件
【发布时间】:2014-07-04 14:50:42
【问题描述】:

我正在开发一个 Android NDK 项目,在该项目中我必须使用需要 c++ 头文件的功能,例如 iostreamsstream 等。我已经在 linux 中通过在 C++ Paths & Symbols 选项卡中添加 /usr/include/c++/4.7.. 来做到这一点。但仍然找不到在 Mac 中执行此操作的方法。我尝试了以下方法:

  • 我只是简单地包含了 iostream 标头 #include<iostream>,它在使用 ndk-build 构建时显示以下错误,fatal error: iostream: No such file or directory

  • C++ Paths and Symbols->Includes tab->cpp 中添加了android-ndk-r9/sources/cxx-stl/gnu-libstdc++/4.8/include,它不会改变任何东西。

  • 在我的 Android.mk 文件中,

     LOCAL_C_INCLUDES := android-ndk-r9/sources/cxx-stl/gnu-libstdc++/4.8/include
    

    它给出了以下错误:

    致命错误:bits/c++config.h:没有这样的文件或目录

    我也尝试在 Android.mk 文件中添加预构建的共享库,这给出了同样的错误。

  • 然后搜索文件bits/c++config.h,将其复制到它正在寻找的实际位置,它显示与osdefines.h相同的错误,我已经复制了它正在寻找的所有文件,最后它要求 bits/memoryfwd.h ,但我在 Mac 的任何地方都找不到该文件。

这里的实际问题是什么?我应该怎么做才能在我的 Android NDK 项目的 cpp 文件中包含这些标头?

【问题讨论】:

  • 你试过this解决方案吗?
  • @AlexCohn 谢谢,我也试过了,没有任何改变。你知道如何在 mac 中找到 gcc 或 c++(mac 中的默认值)的实际包含目录的路径吗? , 如果我能得到我能解决这个问题的路径,希望如此。
  • 你可以运行ndk-build V=1
  • 尝试在你的Application.mk中设置APP_STL := gnustl_static
  • <functional> 标头也有同样的问题。

标签: android android-ndk java-native-interface eclipse-adt ndk-build


【解决方案1】:
  1. 在目录projet_dir/jni/ 中创建一个名为Application.mk 的文件(所以它是projet_dir/jni/Application.mk)。

  2. 将以下行添加到该文件中

    APP_STL:=stlport_static
    
  3. 如果遇到 shared_ptr 错误,请尝试改用 APP_STL := gnustl_static

(我在 Linux 上遇到了同样的问题,上面为我解决了这个问题。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多