NDK プロジェクトの Eclipse インデクサーに問題があります。似たようなスレッドがたくさんありますが、同じ問題の原因に触れているように見えるスレッドはありません。純粋に C で記述された Android に移植する必要がある OpenGL ES アプリケーションがあり、それを NativeActivity として実行したいと考えています。できれば Java を接続していません。ndk-build
コードは何度も書き直した後、正常にコンパイルされますが、IDE からはType 'GLfloat' could not be resolved
. APK が生成され、それをインストールすることadb
ができますが、特にデバッグのために IDE を使用できるようにしたいと考えています。
次のような行のコンテキスト メニューで [宣言を開く] を選択すると#include <GLES2/gl2.h>
、Eclipse はファイルを表示でき、GLfloat
定義がそこにあることがわかりますが、そのファイル内の何かにカーソルを合わせても情報が得られないため、インデクサーはスキップするだけだと思います。なんとなく?Android NDK ディレクトリにないヘッダー ファイルは、jni
フォルダーやjni/png
. ネイティブ機能を備え、CDT ビューを使用するプロジェクトの下にルートをNDKROOT
定義しました。C/C++ Build -> Environment
私が気づいたことの 1 つは、最初にプロジェクトをセットアップしたときに.cpp
、インデクサーが問題なく Android NDK 情報を提供するファイルを持っていたが、それを変更するとすぐに.c
エラーが表示され始めたことです。Android NDK は C で使用するために作成されており、基本的な C++ サポートのみがサポートされているという印象を受けていますが、サンプルを見てみると、たくさんの.cpp
ファイルが表示されるだけなので、混乱しています。私はLOCAL_CPP_EXTENSION += .c
自分で設定しようとしましたAndroid.mk
が、ビルド中にEclipseがハングアップしました。私が試していない最後のことは、すべてのファイルの名前を変更して、代わりに C++ コンパイラでコンパイルされるようにすることですが、なぜこれが必要なのかわかりません。むしろいじらないでください。
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)
アプリケーション.mk
APP_PLATFORM := android-9
APP_ABI := all