我有一些自己的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)
我在尝试构建mylib时遇到的当前错误消息是:
在导入路径中找不到带有标签'libpng'的模块
Android NDK:您确定NDK_MODULE_PATH变量是否已正确定义?
我已将NDK_MODULE_PATH设置为$(LOCAL_PATH),我相信这意味着构建过程应该找到libpng / Android.mk,但事实并非如此。有人可以帮忙吗?
答案 0 :(得分:3)
尝试使用LOCAL_MODULE := png
代替libpng