在导入路径错误中找不到模块

时间:2011-03-01 17:24:09

标签: android c android-ndk libpng

我有一些自己的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时遇到的当前错误消息是:

在导入路径中找不到带有标签'libpng'的模块
Android NDK:您确定NDK_MODULE_PATH变量是否已正确定义?

我已将NDK_MODULE_PATH设置为$(LOCAL_PATH),我相信这意味着构建过程应该找到libpng / Android.mk,但事实并非如此。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

尝试使用LOCAL_MODULE := png代替libpng