Eclipse ADT “… konnte nicht aufgelöst werden” mit Android NDK- und C-Dateien

Ich habe Probleme mit dem Eclipse-Indexer für mein NDK-Projekt. Es gibt eine Menge ähnlicher Themen, aber keine, die dieselbe Problemquelle zu berühren scheinen. Ich habe eine OpenGL ES-Anwendung, die ich auf Android portieren muss und die ausschließlich in C geschrieben ist und die ich als NativeActivity ausführen möchte, vorzugsweise ohne Java. Der Code kompiliert gut mitndk-build nach viel umschreiben, aber von der IDE gibt es viele fehler wieType 'GLfloat' could not be resolved. Ein APK wird erstellt und ich kann es mit installierenadb und alles, aber ich möchte in der Lage sein, die IDE zu verwenden, insbesondere zum Debuggen.

Wenn ich für eine Zeile wie 'Open Declaration' im Kontextmenü wähle#include <GLES2/gl2.h> dann kann Eclipse die Datei anzeigen und ich sehe dieGLfloat Definition ist da, aber ich bekomme keine Informationen, während ich über irgendetwas in dieser Datei schwebe, also nehme ich an, der Indexer überspringt es einfach irgendwie? Header-Dateien, die sich nicht im Android NDK-Verzeichnis befinden, werden einwandfrei indiziert, zjni Ordner und Unterordner mögenjni/png. ich habeNDKROOT root definiert unterC/C++ Build -> Environment, ein Projekt mit nativen Funktionen und Verwendung der CDT-Ansicht.

Eine Sache, die mir aufgefallen ist, war, dass ich bei der ersten Einrichtung des Projekts eine hatte.cpp Datei, für die der Indexer keine Probleme hatte, Android NDK-Informationen bereitzustellen, aber sobald ich sie geändert habe.c Die Fehler traten auf. Ich habe den Eindruck, dass das Android NDK für die Verwendung mit C mit nur grundlegender C ++ - Unterstützung entwickelt wurde, aber ich sehe mich in den Beispielen um und so sehe ich nur ein paar.cpp Dateien, also bin ich verwirrt. Ich habe versucht, Einstellungen vorzunehmenLOCAL_CPP_EXTENSION += .c in meinemAndroid.mk Dies führte jedoch dazu, dass Eclipse während des Builds hängen blieb. Das Letzte, was ich nicht versucht habe, ist, alle Dateien umzubenennen, damit sie stattdessen mit einem C ++ - Compiler kompiliert werden. Ich verstehe jedoch nicht, warum dies erforderlich sein sollte, und ich habe einige Bibliotheken von Drittanbietern wie zlib, die ich als Quelle aufgenommen habe lieber nicht fummeln.

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)
Application.mk
APP_PLATFORM := android-9
APP_ABI := all

Antworten auf die Frage(2)

Ihre Antwort auf die Frage