【问题标题】:Cannot import libpng, libjpeg in ndk androidndk android中无法导入libpng、libjpeg
【发布时间】:2018-12-10 21:16:53
【问题描述】:

我分叉了Ucrop library for cropping,并进行了一些更改。现在我必须构建 ndk 来进行更改。但我不断收到此错误:

 Android NDK: jni/Android.mk: Cannot find module with tag 'libpng' in import path    
 Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?    
 Android NDK: The following directories were searched:    
 Android NDK: jni/Android.mk:15: *** Android NDK: Aborting.    .  Stop.

项目使用Cimg库。

这是我的 Android.mk 文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := ucrop
LOCAL_SRC_FILES := uCrop.cpp

LOCAL_LDLIBS    := -landroid -llog -lz
LOCAL_STATIC_LIBRARIES := libpng libjpeg_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,libpng)
$(call import-module,libjpeg)

我尝试了所有在线提供的解决方案。但没有任何效果。我试过“Adding libpng in android ndk project”和很多答案。

【问题讨论】:

  • 这里为什么有CImg标签?
  • 该库使用 CImg。 libpng 和 libjpeg 用于 CImg。所以我想知道,如果有人使用CImg并成功导入了libpng和libjpeg,
  • 嗯,我明白了。抱歉,我无能为力 - 你超出了我的知识范围!
  • 哦,好的。我试图解决这个问题两天,我不能。如此沮丧。我知道这并不容易,因为在网上任何地方都没有好的解决方案。这似乎很容易,但很难解决。
  • a) 您是否安装了libpng? b) 您能准确找到 where libpng 的安装位置 - 即哪个目录? c) 您是否可以手动将包含libpng 的目录的完整显式路径添加到您的构建中,而不是希望import-module 可以为您找到它?只是一些疯狂的想法...... :-)

标签: android android-ndk java-native-interface ndk-build cimg


【解决方案1】:

最后我让它工作了。这很难,因为我是 NDK 的初学者。但我会在这里发布我是如何做到的,因为它可能对其他初学者有所帮助。

首先我下载libpnglibjpeg,并将其保存在Android/Sdk/ndk-bundle/sources下。我将它们分别保存在名称 libpng 和 libjpeg 下。

然后修改Android.mk如下,

LOCAL_PATH := $(call my-dir)

LOCAL_P := /usr/lib/

include $(CLEAR_VARS)

LOCAL_MODULE    := ucrop
LOCAL_SRC_FILES := uCrop.cpp

LOCAL_LDLIBS    := -landroid -llog -lz
LOCAL_STATIC_LIBRARIES := libpng libjpeg9

include $(BUILD_SHARED_LIBRARY)

$(call import-module,libpng/jni)
$(call import-module,libjpeg/libjpeg9)

然后设置环境路径NDK_MODULE_PATH如下,

export NDK_BUILD_PATH=/home/jerin/Android/Sdk/ndk-bundle/sources

这很重要,因为在 ndk 构建期间,它会在此路径中查找库。

You can compile ndk-build during gradle build by following [this][1]. Right-click on the module you would like to link to your native library, such as the app module, and select Link C++ Project with Gradle from the menu. Then select ndk-build, and give path to Android.mk

【讨论】:

  • 对不起英语。我也是第一次使用 ndk,也使用了 ucrop。而且我必须修改ndk以支持mips,mips64。您能告诉我您使用哪个版本的 ndk?(我尝试了 r10e、r11c、r12b、r13b)我的 r13b 错误是 jni/CImg.h:275:10: fatal error: 'omp.h' file not found #include other's error is jni/CImg.h:321:21: fatal error: jpeglib.h: No such file or directory #include "jpeglib.h"
  • @SooChunJung 我在android studio中使用了ndk,我相信它的r16
  • 构建成功!非常感谢:)
  • 太好了,很高兴它有帮助:)
  • 我收到以下错误:在导入路径中找不到带有标签“libpng/jni”的模块
猜你喜欢
  • 2012-12-25
  • 2019-06-11
  • 1970-01-01
  • 2020-11-22
  • 2015-01-06
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多