Редактор Eclipse не распознает типы шаблонов C ++ при использовании Android NDK

0

Я пытаюсь скомпилировать следующий простой код C++ как собственный код Android с помощью NDK и Eclipse CDT:

#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. Проблема в том, что в последней строке (где есть комментарий //error здесь) редактор Eclipse сообщает о следующей ошибке:

Field 'x' could not be resolved

Возможные решения:

  • напишите pts[0].x следующим образом: int я = ((Pt)pts[0]).x;
  • use var: Pt apt = pts[0]; int я = apt.x; Pt apt = pts[0]; int я = apt.x; (удивительно, это работает)

Я потратил почти 2 дня на настройку eclipse с помощью настраиваемых путей для включения файлов, игры с индексом, обновления до последнего NDK и всего остального, что я могу себе представить. Проблема остается. Эта проблема, очевидно, появляется с каждым классом, который принимает параметризованный тип (не только с вектором). Хотя Eclipse компилирует код, тот факт, что эта ошибка приводит к тому, что проект Android отмечен как "имеющий ошибки", делает невозможным его запуск в целом.

Любая помощь очень ценится, спасибо

Теги:
android-ndk
eclipse-cdt

1 ответ

1

Может быть, это может вам помочь, вы должны включить правильные заголовки для STL в свойствах проекта.

  • 0
    Я сделал все это; они были необходимы для распознавания типа std (например, вектора). Но проблема здесь в том, что шаблон «возвращаемые типы» не распознается в редакторе. Обратите внимание, что Eclipse не говорит, что «вектор» не распознан; скорее он говорит, что «х» не может быть разрешен (и это только при использовании определенного синтаксиса).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню