使用Android NDK时,Eclipse编辑器无法识别C ++模板类型

时间:2014-03-11 16:30:13

标签: android c++ eclipse android-ndk eclipse-cdt

我正在尝试使用NDK和Eclipse CDT将以下简单的C ++代码编译为本机Android代码:

#include <vector>

using namespace std;

class Pt {
public:
  Pt(int _x, int _y);
  int x;
  int y;
};

Pt::Pt(int _x, int _y){
x = _x;
y = _y;
}

void test(){
  std::vector<Pt> pts;
  pts.push_back(Pt(2,3));
  int i = pts[0].x; //error here
}

我可以从命令行编译代码ndk-build.cmd没有问题,我甚至可以在Eclipse中编译代码。问题是在最后一行(这里有//错误注释),Eclipse编辑器报告以下错误:

Field 'x' could not be resolved

可能的解决方案是:

  • 像这样写pts[0].xint i = ((Pt)pts[0]).x;
  • 使用var:Pt apt = pts[0]; int i = apt.x;(令人惊讶的是,这有效)

我花了将近2天的时间尝试使用自定义路径设置eclipse以包含文件,使用索引器进行游戏,升级到最新的NDK以及我能想象的其他所有内容。问题仍然存在。这个问题显然出现在每个采用参数化类型的类中(不仅仅是向量)。 虽然Eclipse确实编译了代码,但报告此错误的事实导致Android项目被标记为“有错误”,因此无法将其作为一个整体运行。

非常感谢任何帮助, 感谢

1 个答案:

答案 0 :(得分:1)

可能this可以帮助您,您必须在项目属性中包含STL的正确标头。