如何链接prebuilt共享库的Andr​​oid NDK的项目? [英] How can i Link prebuilt shared Library to Android NDK project?

查看:199
本文介绍了如何链接prebuilt共享库的Andr​​oid NDK的项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这里,我在 JNI / 文件夹中使用该 Android.mk 文件。

Here I used this Android.mk file in jni/ folder.

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Here we give our module name and source file(s)
LOCAL_MODULE    := offlineDownload
LOCAL_SRC_FILES := offline_download.c

LOCAL_SHARED_LIBRARIES :=../lib/libpackext.so.1.0
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog

include $(BUILD_SHARED_LIBRARY)

和做一个 LIB 文件夹中的项目目录,并把我的prebuilt 的.so 库,使一张 Android.mk 文件,其中包含以下

And make one lib folder in project directory and put my prebuilt .so library and make one Android.mk file which contains following

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := packext
LOCAL_SRC_FILES := libpackext.so.1.0
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include

include $(PREBUILT_SHARED_LIBRARY)

当我使用 NDK-建立-B 命令比我得到的未定义参考packageExtraction 的。在这里,我用我的prebuilt库函数意味着我不能链接到我的prebuilt共享库到我的 offlinedownload 库。

And when i use ndk-build -B command than i got undefined reference to packageExtraction. Here I use my prebuilt library functions means I can't link my prebuilt shared library to my offlinedownload library.

所以,任何机构,请帮我解决了这个问题。

So any body please help me to solved out this issue.

推荐答案

下面是一个完整的Andr​​oid.mk文件使用共享库的第三方。 库(libffmpeg.so)被放置在JNI夹。 它的LOCAL_EXPORT_C_INCLUDES指定了头文件保存库。

Here is a complete Android.mk file for using a 3rd party shared library. The library (libffmpeg.so) is placed in the jni folder. Its "LOCAL_EXPORT_C_INCLUDES" specifies where the header files are kept for the library.

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := ffmpeg
LOCAL_SRC_FILES := libffmpeg.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../ffmpeg/libs/arm-linux-androideabi4.7_1/include
include $(PREBUILT_SHARED_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE    := ffmpegandroid
LOCAL_SRC_FILES := ffmpegandroid.c
LOCAL_SHARED_LIBRARIES := ffmpeg
include $(BUILD_SHARED_LIBRARY)

如果你想支持多种架构,那么你可以指定:

If you wanted to support multiple architectures then you could specify:

APP_ABI := armeabi armeabi-v7a x86 mips

在你的JNI / Application.mk,改变LOCAL_SRC_FILES来是这样的:

in your jni/Application.mk and change the LOCAL_SRC_FILES to something like:

LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libffmpeg.so

和放置libffmpeg.so在JNI / armeabi / libffmpeg.so,JNI / armeabi-V7A / libffmpeg.so等。

and place a libffmpeg.so at jni/armeabi/libffmpeg.so, jni/armeabi-v7a/libffmpeg.so etc ..

这篇关于如何链接prebuilt共享库的Andr​​oid NDK的项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆