android – 使用NDK对静态库中的函数进行未定义的引用

android – 使用NDK对静态库中的函数进行未定义的引用,第1张

概述所以我试图在我的本机代码上使用libopus来安装 Android应用程序. 我的Android.mk文件如下所示: PLATFORM_PREFIX := /opt/android-ext/LOCAL_PATH := $(PLATFORM_PREFIX)/libinclude $(CLEAR_VARS)LOCAL_MODULE := libopusLOCAL_SRC_FILES := 所以我试图在我的本机代码上使用libopus来安装 Android应用程序.
我的AndroID.mk文件如下所示:

PLATFORM_PREFIX := /opt/androID-ext/LOCAL_PATH := $(PLATFORM_PREFIX)/libinclude $(CLEAR_VARS)LOCAL_MODulE := libopusLOCAL_SRC_fileS := libopus.ainclude $(PREBUILT_STATIC_liBRARY)# I have to redeclare LOCAL_PATH because the library is in /opt/androID-ext/# and my project is somewhere else. Not very elegant.LOCAL_PATH := /home/sergio/workspace/Project/jniinclude $(CLEAR_VARS)LOCAL_MODulE := opusUtilsNativeLOCAL_SRC_fileS := opusUtilsNative.cLOCAL_C_INCLUDES += $(PLATFORM_PREFIX)/includeLOCAL_STATIC_liBRARIES := androID_native_app_glue libopusinclude $(BUILD_SHARED_liBRARY)

我在opusUtilsNative.c中的代码如下所示:

#include "opusUtilsNative.h"#include <opus/opus.h>#include <opus/opus_types.h>JNIEXPORT jbyteArray JNICALL Java_Project_OpusUtils_encode  (jnienv * je,jclass jc,jbyteArray data){    int rc;    opus_int16 * testOutBuffer;    unsigned char* opusBuffer;    OpusDecoder *dec;    dec = opus_decoder_create(48000,2,&rc);    return data;}

当我尝试构建它时,只有当我删除使用“opus_decoder_create”函数的行时它才能正常工作.否则我会得到这个:

error: undefined reference to 'opus_decoder_create'

我可以看到opus_decoder_create在opus.h上明确定义,显然是包含在内,因为如果我排除该行,我将得到关于opus_int16和OpusDecoder声明的错误.为什么要包含一些定义而有些定义不包括在内?

任何帮助将不胜感激.

解决方法 这很棘手.经过一段时间的挖掘后,我意识到我没有正确地交叉编译opus库,毕竟我没有ARM二进制文件.

验证库是否正确交叉编译的好方法:

cd /opt/androID-ext/lib #Or wherever the .a file isar x libopus.afile tables_LTP.o #Or any of the .o files generated by ar x

输出应如下所示:

tables_LTP.o: ELF 32-bit LSB relocatable,ARM,version 1 (SYSV),not stripped

否则,您可能需要仔细检查交叉编译过程.

总结

以上是内存溢出为你收集整理的android – 使用NDK对静态库中的函数进行未定义的引用全部内容,希望文章能够帮你解决android – 使用NDK对静态库中的函数进行未定义的引用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1129172.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存