我的 NDK 项目的 Eclipse 索引器出现问题。那里有很多类似的线程,但似乎没有一个涉及相同的问题来源。我有一个 OpenGL ES 应用程序,我需要将它移植到纯粹用 C 语言编写的 Android,我想作为 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
. 我在NDKROOT
下定义了根C/C++ Build -> Environment
,这是一个具有本机功能并使用 CDT 视图的项目。
我注意到的一件事是,当我最初设置项目时,我有一个.cpp
文件,索引器在提供 Android NDK 信息时没有问题,但是一旦我将其更改为.c
开始出现错误。我的印象是,Android NDK 是为 C 设计的,只有基本的 C++ 支持,但在示例中四处查看,所以我只看到一堆.cpp
文件,所以我很困惑。我已经尝试过设置LOCAL_CPP_EXTENSION += .c
,Android.mk
但这导致 Eclipse 在构建期间挂起。我没有尝试过的最后一件事是重命名所有文件,以便使用 C++ 编译器编译它们,但我不明白为什么这应该是必要的,而且我有一些第三方库,如源代码中包含的 zlib而不是摆弄。
安卓.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