c - 带有 Android NDK 和 C 文件的 Eclipse ADT "... could not be resolved"

标签 c eclipse android-ndk adt

我的 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 .我有NDKROOTC/C++ Build -> Environment 下定义的根目录,一个具有 native 功能并使用 CDT View 的项目。

我注意到的一件事是,当我最初设置项目时,我有一个 .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

最佳答案

这可能不是解决问题的正确方法,但您可以找到文件 ${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)。

更新 更好的解决方法是设置 ADT 以正确使用 indexer,请参阅 Android NDK build, Method could not be resolved Eclipse compiles successfully but still gives semantic errors .

关于c - 带有 Android NDK 和 C 文件的 Eclipse ADT "... could not be resolved",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19360668/

相关文章:

c - 将数组附加到共享内存

c - ANSI C 从文件中分离数据

java - Eclipse RCP : java. lang.ClassNotFoundException 运行时

c++ - 使用 android_native_app_glue.c 时可以从 java 调用 native 代码吗

C链接库独立构建

使用gcc编译c程序时出现类型冲突错误

java - EclipseLink 和 Hibernate 集成

java - 配置 Eclipse 项目的构建路径

android - NDK 编码中 OpenCV 的未定义引用错误过多

android - JNI : Catch NewStringUTF Inner-Exception