我正在尝试通过 Cygwin 终端运行“ndk-build”来编译调用 Android NDK 函数(例如“AAsset_close”)的 Android-9 项目,但“ndk-build”命令返回一条错误消息,指出它找不到函数定义。
来自“ndk-build”的错误信息如下:
[Android NDK 路径]/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm -linux-androideabi/bin/ld.exe:[项目文件夹]/静态库:在函数中 [函数名]:[文件名]:39:错误:未定义对 'AAsset_close' 的引用
等等
我的“Android.mk”文件如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := <name of project>
LOCAL_C_INCLUDES := <folders where header files are located>
LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__ -DtyANDROID
LOCAL_CPPFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__ -DtyANDROID
LOCAL_LDLIBS := -lm -lEGL -lGLESv2 -llog -lz -landroid
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_ARM_MODE := arm
LOCAL_SRC_FILES := <source files>
include $(BUILD_STATIC_LIBRARY)
...
我的“Application.mk”生成文件如下:
APP_ABI := armeabi armeabi-v7a x86
APP_PLATFORM := android-9
根据“nm” Unix 命令,此函数在 Android NDK 库“libandroid.so”中定义,该库存在于所有目标平台的 NDK 路径中。如上所示,我在“LOCAL_LDLIBS”宏中包含了“-landroid”,这应该允许我链接到该库。我还需要做什么来修复这个编译错误?