Android dirent.h opendir() 无法编译

Android dirent.h opendir() won't compile

我目前无法编译 dirent.h 函数,例如 opendir()。我做了什么?我确定我成功了。

Android_Utils.cpp:

#include <dirent.h>

void Test1237( void )
{
    struct DIR *dir = opendir( "blah" );
}

我的 Android.mk 文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := SDL2-prebuilt
LOCAL_SRC_FILES := /work/SDL2/lib-android/$(TARGET_ARCH_ABI)/libSDL2.so
include $(PREBUILT_SHARED_LIBRARY)

# --------------------------------------------------------------------------------------------------

JNI_LIBPATH := /work/TT/android-TT/jniLibs

include $(CLEAR_VARS)
LOCAL_MODULE := libfreetype2
LOCAL_SRC_FILES := /work/FreeType2/Android/$(TARGET_ARCH_ABI)/libfreetype2-static.a
include $(PREBUILT_STATIC_LIBRARY)


# --------------------------------------------------------------------------------------------------

include $(CLEAR_VARS)

LOCAL_MODULE := main

SDL_PATH := /work/SDL2-2.0.4
GLM_PATH := /work/glm
GLM_NDK_PATH1 := /Android/android-ndk-r9d/platforms/android-14/arch-arm/usr/include
GLM_NDK_PATH2 := /Android/android-ndk-r9d/sources/cxx-stl/gnu-libstdc++/4.4.3/include
GLM_NDK_PATH3 := /Android/android-ndk-r9d/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include

TT_PATH := /work/TT
TT_INCLUDES := $(TT_PATH) 

LOCAL_C_INCLUDES := $(TT_INCLUDES) $(SDL_PATH)/include $(GLM_NDK_PATH1) $(GLM_NDK_PATH2) $(GLM_NDK_PATH3) $(GLM_PATH) $(FT2_INCLUDES)

MY_CFLAGS     := -DANDROID_PDS -mfloat-abi=softfp -mfpu=neon

ifeq ($(TARGET_ARCH_ABI),$(filter $(TARGET_ARCH_ABI), armeabi-v7a x86))
    LOCAL_CFLAGS := -DHAVE_NEON=1 $(MY_CFLAGS) -Wno-write-strings -Wno-trigraphs
    LOCAL_CPPFLAGS := -Wno-conversion-null -fno-permissive
    LOCAL_ARM_MODE := arm
    LOCAL_ARM_NEON := true
endif

LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \
    $(TT_PATH)/Android_Utils.cpp \
    $(TT_PATH)/main.cpp

LOCAL_SHARED_LIBRARIES := SDL2-prebuilt
LOCAL_STATIC_LIBRARIES := libfreetype2 

LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog -lm

include $(BUILD_SHARED_LIBRARY)

输出:

SparkbookPro:jni admin$ ndk-build
[armeabi-v7a] Install        : libSDL2.so => libs/armeabi-v7a/libSDL2.so
[armeabi-v7a] Compile arm    : main <= SDL_android_main.c
[armeabi-v7a] Compile++ arm  : main <= Android_Utils.cpp
/work/TT/Android_Utils.cpp: In function 'void Test1237()':
/work/TT/Android_Utils.cpp:12:39: error: 'opendir' was not declared in this scope

啊哈!我的包含路径中有 dirent.h 的本地副本,因此未包含标准副本。