2

我有一些我自己的 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 但它没有。任何人都可以帮忙吗?

4

1 回答 1

3

尝试使用LOCAL_MODULE := png而不是libpng

于 2011-03-02T15:54:02.563 回答