在导入路径中找不到模块错误
我有一些自己的 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 材料,它已经可以编译。 libpng 本身也会成功编译。请注意,我将代码和 libpng 代码保存在单独的目录中,并尝试使用顶级 make 文件来编译它们。
尝试构建 mylib 时遇到的当前错误消息是:
Cannot find module with tag 'libpng' in import path
Android NDK:您确定您的 NDK_MODULE_PATH 变量已正确定义吗?
我已将 NDK_MODULE_PATH 设置为 $(LOCAL_PATH),我相信这意味着构建过程应该找到 libpng/Android.mk,但事实并非如此。有人可以帮忙吗?
I have some of my own C++ code compiling and running fine using the NDK. As I can't see any way to access the libpng library that is built into Android, my only option seems to be to compile my own version and use that (I'd be interested to know about alternatives).
I'm currently trying to extend my code to make use of libpng. I can't work out how to get my code to build. I've read the docs and scoured through newsgroup question and answers but I can't resolve my problem.
I've copied libpng to my source tree. I'm trying to compile libpng as a static library and then have my code use this to access libpng's functions. Here is what I have so far for my make files:
########## 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 is my code that already compiles if I remove all the libpng material. libpng will compile successfully on its own as well. Notice I'm keeping my code and the libpng code in separate directories and trying to use a top-level make file to compile these.
The current error message that I'm stuck on when attempting to build mylib is:
Cannot find module with tag 'libpng' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?
I've set NDK_MODULE_PATH to $(LOCAL_PATH) which I believe means the build process should find libpng/Android.mk but it doesn't. Can anyone help?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用
LOCAL_MODULE := png
而不是libpng
Try with
LOCAL_MODULE := png
instead oflibpng