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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann dies nicht der richtige Weg sein, das problem zu beheben, aber Sie finden die Datei
${WORKSPACE_LOC}/.metadata/.plugins/com.android.ide.eclipse.ndk/${ProjName}.pathinfo
. Es ist eine text-Datei im einfachen format. Um zu beginnen, versuchen, diese Datei zu löschen und das Projekt neu erstellen. Wenn das nicht hilft, können Sie hinzufügenmanuell (das Beispiel oben ist für Windows).
Update eine bessere Lösung ist die Einrichtung ADT arbeiten mit indexer richtig, siehe Android NDK-build-Methode konnte nicht aufgelöst werden oder Eclipse kompiliert, erfolgreich, aber immer noch gibt semantischer Fehler.
#include <GLES2/gl2.h>
undGLfloat qqq;
ist es nun grün?GLfloat
ist immer noch rot. Ich habe versucht mit dem umbenennen alle.c
Dateien in der Basisjni
Ordner zu.cpp
und diese auf der anderen Seite stellt sich dieGLfloat
und wenn ich den Mauszeiger darüber schweben er wird sagen, dass es ein typedef vonkhronos_float_t
. Das Problem scheint zu sein, dass der IDE-interpretiert die Android NDK-Header als C++ enthält, aber ich habe keine Ahnung, wie das zu reparieren.C/C++ General
->Paths and Symbols
zeigen, wenn Sie wieder " Show built-in values aus? auf?c,cpp
in der Liste und weder die built-in beinhaltet noch die Sprache geändert werden kann.ndk-gdb
. Ich habe nicht überprüft, ob ich benutzen kann .c-Dateien, aber an diesem Punkt ist es egal, da ich bereits schrieb alles, so dass ich in der Lage bin, Dinge zu erledigen nun.klicken Sie rechts auf die jni-Ordner und haben die Eigenschaft, klicken Sie auf c/c++ allgemein und in den include Ordner enthalten
unter Dateien existiert in Ihrem ndk bitte importieren und müssen auf anwenden klicken,