使用Android NDK和std :: vector修复Eclipse错误

时间:2011-10-05 20:01:14

标签: android eclipse android-ndk

我正在使用eclipse开发一个也使用ndk的Android应用程序。我在我的应用程序中向量,我已经完成了必要的东西,包括

APP_STL:= stlport_static

在我的Application.mk

一切正常,它编译并运行但是当我使用向量时,Eclipse一直给我错误

std::vector<int> blah
例如,

会产生错误。如果我删除错误并继续进行编译并运行正常。

我添加了 $ {NDKROOT} /来源/ CXX-STL / GNU-的libstdc ++ /包括

在C ++ General下的项目配置中 - &gt;路径和符号 - &gt;包括

它解析#include <vector>很好(在我添加上面的路径之前,我有一个错误)但我仍然使用向量得到错误。

我怎样才能让eclipse停止给我错误?

编辑:

示例错误:Symbol 'vector' could not be resolved

编辑2:

我尝试添加

using namespace std;

然后使用vector blah并导致不同的错误:

  

无效的模板参数

4 个答案:

答案 0 :(得分:13)

  

我添加了$ {NDKROOT} / sources / cxx-stl / gnu-libstdc ++ / include

     

在C ++ General下的项目配置中 - &gt;路径和符号 - &gt;包括

是的,就是这样。我试图添加相同的结果。 但是,如果添加stl_port标题

${NDKROOT}/sources/cxx-stl/stlport/stlport

它会做到这一点。当然没有必要改变

APP_STL := stlport_static

因为它仅适用于eclipse索引。在你打算使用gnu-libstdc ++中存在的东西并且不存在stl-port之前,这将是有用的。

答案 1 :(得分:2)

  

块引用

我正在起诉日食indigo rc2。

我在Android.mk中添加了以下行

LOCAL_C_INCLUDES += ${NDKROOT}/sources/cxx-stl/stlport/stlport

并在Application.mk中添加以下行

APP_STL := stlport_static

然后自动添加我的ndk stlport路径

  

属性 - &gt; C ++ General - &gt;路径和符号 - &gt;包括

祝你好运! ^^

答案 2 :(得分:1)

起初,我们遇到了与map相同的问题,并尝试按照建议添加“路径和符号”,但它仍然无效。

稍后,而不是

#include <map>

我们使用了

#include <stl/_map.h>

错误消失了,然后我们切换回include <map>。 Eclipse不再抱怨“符号无法解决”。

似乎eclipse有一个缓存,除非你明确地告诉它找到符号的正确位置,否则它会被搞砸。

答案 3 :(得分:0)

我不知道它在哪个阶段起作用,但是:

  1. 添加到Application.mk APP_STL := gnustl_static

  2. 将include添加到项目属性 - &gt; C / C ++ General - &gt;路径和符号
    'NDK root path'/'your directory to android platform'/arch-arm/usr/include 'NDK root path'/sources/cxx-stl/gnu-libstdc++/4.9/include 'NDK root path'/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include/bits

  3. 关闭项目属性中的所有警告错误 - > C ++ General-&gt; Code Analisis。

  4. 项目属性 - &gt; C ++ Build-&gt;构建器设置 - &gt;取消选中使用默认构建命令。构建命令集为空。
  5. 接下来配置NDK Builder:项目属性 - &gt; Builders-&GT;新建 - &GT;编程和填写名称(您的名称构建conf),位置(NDK根目录的路径),工作目录(项目目录的路径)。 - &GT;刷新并检查特定资源(项目中的libs文件夹)。 - &GT;构建选项检查指定相关资源的工作集并更改&#39; jni&#39;与你的来源文件夹。
  6. 在Ubuntu 15.04中工作。 Eclipse 3.8.1。 Android NDK r10e。