android NDK :使用预编译第三方库

本文介绍了在Android NDK环境中如何整合预编译的第三方库,如G726 codec,包括编译库、复制产物、修改Android.mk文件以及在源码中引用头文件的详细步骤,帮助开发者快速将预编译库应用到项目中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预编译第三方库通常基于两个目的,一个是提供该库者并不想开源代码,二是开发者可以加快自个项目构建。
下面是一个使用G726 codec编码库的demo。
1.编译G726 codec,编译G726 。将G726相关code copy到编译目录,写好mk文件。
LOCAL_PATH := $(call my-dir)

### Glue for wz g726 codec ###
include $(CLEAR_VARS)
LOCAL_MODULE := wz_g726_codec

G726_PATH := $(LOCAL_PATH)/sources

# g726
LOCAL_C_INCLUDES += $(G726_PATH)/
G726_FILES := $(wildcard $(G726_PATH)/*.c)
LOCAL_SRC_FILES += $(G726_FILES:$(LOCAL_PATH)/%=%) 

include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)

生成产物:libwz_g726_codec.so

2.将产物copy到使用该第三方库的目录下,如下图所示:

假设TestAndroidMK.cpp中引用,编写同级目录android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libwz_g726_codec-pre
LOCAL_SRC_FILES := libwz_g726_codec.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include  //导出第三方库相应的头文件,当编译TestAndroidMK时,判断依赖libwz_g726_codec-pre,则会自动加入该变量进行编译
include $(PREBUILT_SHARED_LIBRARY) //编译为动态共享库,亦可编译成静态共享库


#LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := TestAndroidMK
LOCAL_SRC_FILES := TestAndroidMK.cpp
LOCAL_LDLIBS    := -llog
LOCAL_SHARED_LIBRARIES  := libwz_g726_codec-pre
include $(BUILD_SHARED_LIBRARY)

3.修改TestAndroidMK.cpp,引用头文件
extern "C" {
#include <g72x.h>
}

由于g726相关code为c文件,在c++环境extern关键字引用其头文件

OK,编译,我们会发现在libs/Target_ABI/目录下生成libwz_g726_codec.so和可以引用libwz_g726_codec.so内容的libTestAndroidMK.so两个库,
well done!

参考:http://www.cnblogs.com/qq78292959/archive/2011/11/02/2232962.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值