Eclipse ADT "... konnte nicht aufgelöst werden" mit Android NDK und C-Dateien

Ich habe Probleme mit der Eclipse indexer für meine NDK-Projekt. Es gibt eine Menge ähnlicher threads gibt, aber keine, die sich zu berühren scheinen auf dieselbe Quelle von Problemen. Ich habe ein OpenGL ES-Anwendung, die ich brauche, um port über Android geschrieben, rein in C die ich gerne ausführen als NativeActivity, vorzugsweise mit Java verknüpft. Der code wird kompiliert fein mit ndk-build nach eine Menge umschreiben, aber aus der IDE, es gibt eine Menge von Fehlern, wie Type 'GLfloat' could not be resolved. Eine APK wird hergestellt und ich kann es installieren, mit adb und alles, aber ich möchte in der Lage sein, die Verwendung der IDE, besonders für die Fehlersuche.

Wenn ich wähle 'Open Declaration' in das Kontextmenü für eine Zeile wie #include <GLES2/gl2.h> dann Eclipse ist in der Lage, um die Datei anzuzeigen, und ich sehe die GLfloat definition ist es aber ich bekomme keine info beim überfahren von nichts in dieser Datei, so Schätze ich, dass der indexer nur überspringt es irgendwie? Header-Dateien, die nicht im Android-NDK-Verzeichnis indiziert gerade fein, wie diejenigen, die in der jni Ordner und Unterordner wie jni/png. Ich habe NDKROOT root definiert unter C/C++ Build -> Environment ein Projekt mit systemeigenen Funktionen und die Verwendung der CDT-Ansicht.

Eine Sache, die ich bemerkte, war, dass wenn ich das Projekt anfangs hatte ich ein .cpp - Datei, die den indexer hatte kein problem, die Bereitstellung von Android-NDK-Informationen für, aber sobald ich es geändert .c die Fehler tauchten. Ich bin unter dem Eindruck, dass das Android NDK ist für die Verwendung mit C-nur mit basic-C++ - support, aber auf der Suche um in die Proben und solche, die ich gerade sehen, eine Reihe von .cpp - Dateien, so dass ich verwirrt bin. Ich habe versucht Einstellung LOCAL_CPP_EXTENSION += .c in meinem Android.mk aber das verursacht Eclipse hängen beim bauen. Das Letzte, was ich noch nicht ausprobiert habe ist die Umbenennung aller Dateien, so dass Sie compiliert mit einem C++ - compiler anstelle aber ich verstehe nicht, warum das nötig sein sollte und ich habe einige Drittanbieter-Bibliotheken wie zlib enthalten, die von Quelle, die ich lieber nicht Herumspielen.

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

define all-cpp-files-under
$(patsubst ./%, %, \
    $(shell cd $(LOCAL_PATH) ; \
        find $(1) -name "*.c" -and -not -name ".*") \
)
endef

LOCAL_MODULE    := MyProject
LOCAL_SRC_FILES := $(call all-cpp-files-under, .)
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2 -lOpenSLES
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_C_INCLUDES += $(LOCAL_PATH)/jansson
LOCAL_C_INCLUDES += $(LOCAL_PATH)/zlib
LOCAL_C_INCLUDES += $(LOCAL_PATH)/png

include $(BUILD_SHARED_LIBRARY)

$(call import-module,android/native_app_glue)

Anwendung.mk

APP_PLATFORM := android-9
APP_ABI := all
  • Was passiert, wenn Sie kommentieren Sie APP_ABI := all?
  • Viel passiert nicht. Die Fehler sind immer noch da und die Ordner Enthält, zeigt die gleichen arm-Einträge. Ich habe versucht, die Reinigung und re-Indizierung zu.
  • Siehe meine Antwort hier stackoverflow.com/a/22935387/1525238 für eine vollständige Indizierung Fähigkeit.
Schreibe einen Kommentar