我的 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
in my Android.mk
但这导致 Eclipse 在构建过程中挂起。我没有尝试过的最后一件事是重命名所有文件,以便使用 C++ 编译器来编译它们,但我不明白为什么这是必要的,而且我有一些第三方库,例如我希望包含在源代码中的 zlib而不是不去摆弄。
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
这可能不是解决问题的正确方法,但您可以找到该文件${WORKSPACE_LOC}/.metadata/.plugins/com.android.ide.eclipse.ndk/${ProjName}.pathinfo
。它是一个文本文件,格式简单。首先,尝试删除该文件,然后重建项目。如果这没有帮助,您可以添加
i,d:/android/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.6/include
i,d:/android/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.6/include-fixed
i,D:/Android/android-ndk-r9/platforms/android-14/arch-arm/usr/include
手动(上面的示例适用于 Windows)。
Update更好的解决方法是设置 ADT 来使用indexer正确,参见Android NDK 构建,方法无法解析 https://stackoverflow.com/questions/23155676/android-ndk-build-method-could-not-be-resolved or Eclipse 编译成功但仍然给出语义错误 https://stackoverflow.com/questions/16786555/eclipse-compiles-successfully-but-still-gives-semantic-errors.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)