我有一些我自己的 C++ 代码使用 NDK 编译和运行良好。由于我看不到任何访问 Android 内置的 libpng 库的方法,我唯一的选择似乎是编译我自己的版本并使用它(我有兴趣了解替代方案)。
我目前正在尝试扩展我的代码以使用 libpng。我不知道如何构建我的代码。我已经阅读了文档并浏览了新闻组问题和答案,但我无法解决我的问题。
我已将 libpng 复制到我的源代码树中。我正在尝试将 libpng 编译为静态库,然后让我的代码使用它来访问 libpng 的函数。到目前为止,这是我的 make 文件:
########## Directory layout ##########
jni/
Android.mk
mylib/
Android.mk
source files...
libpng/
Android.mk
source files...
########## Top-level Android.mk ##########
LOCAL_PATH := $(call my-dir)
include $(LOCAL_PATH)/libpng/Android.mk
include $(LOCAL_PATH)/mylib/Android.mk
########## mylib Android.mk ##########
include $(CLEAR_VARS)
NDK_MODULE_PATH := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := libpng
LOCAL_C_INCLUDES := $(LOCAL_PATH)/libpng
LOCAL_LDLIBS := -llog
LOCAL_MODULE := mylib
LOCAL_CFLAGS :=
sources := mylib.cpp
LOCAL_SRC_FILES += $(sources:%=mylib/%)
include $(BUILD_SHARED_LIBRARY)
$(call import-module, libpng)
########## libpng Android.mk ##########
include $(CLEAR_VARS)
LOCAL_CFLAGS :=
LOCAL_MODULE := libpng
sources :=\
png.c \ # etc.
LOCAL_SRC_FILES += $(sources:%=libpng/%)
LOCAL_LDLIBS := -lz
include $(BUILD_STATIC_LIBRARY)
如果我删除所有 libpng 材料,mylib 是我已经编译的代码。libpng 也将自行成功编译。请注意,我将我的代码和 libpng 代码保存在不同的目录中,并尝试使用顶级 make 文件来编译它们。
我在尝试构建 mylib 时遇到的当前错误消息是:
在导入路径 Android NDK 中找不到带有标签“libpng”的模块
:您确定您的 NDK_MODULE_PATH 变量已正确定义吗?
我已经将 NDK_MODULE_PATH 设置为 $(LOCAL_PATH) 我相信这意味着构建过程应该找到 libpng/Android.mk 但它没有。任何人都可以帮忙吗?