0

我的 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 += .cAndroid.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
4

2 回答 2

1

这可能不是解决问题的正确方法,但您可以找到文件${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 以正确 使用索引器,请参阅Android NDK build, Method could not be resolve or Eclipse compiles successful but still gives semantic errors

于 2013-10-15T07:12:21.897 回答
1

右键单击 jni 文件夹并进入属性单击 c/c++ general 并在包含文件夹中包含以下文件存在于您的 ndk 请导入并且必须单击应用

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
于 2013-12-17T12:47:34.577 回答