c - SL_IID_ANDROIDSIMPLEBUFFERQUEUE调用的问题
ringa_lee
ringa_lee 2017-04-17 17:49:05
[Android讨论组]

我想用jni在c层直接调用音频设置录音,在网上找了例子边研究,边编写代码时,发现
SL_IID_ANDROIDSIMPLEBUFFERQUEUE这个预定义变量只有声明,没有值,导致我编译不通过

提示 Error:(178) undefined reference to 'SL_IID_ANDROIDSIMPLEBUFFERQUEUE'

而我检查过代码了,已经include相关的头文件了

include <SLES/OpenSLES.h>

include <SLES/OpenSLES_Android.h>

我是c菜鸟,望大神指点迷津!
代码如下

int initNativeRecorder(){
    SLresult f_result;
    SLDataLocator_IODevice loc_dev={SL_DATALOCATOR_IODEVICE,SL_IODEVICE_AUDIOINPUT,SL_DEFAULTDEVICEID_AUDIOINPUT,NULL};
    SLDataSource aud_src = {&loc_dev,NULL};
    LOGE("Setup Audio Input Dev! OK!");
    SLDataLocator_AndroidSimpleBufferQueue mQueue = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE,2};
    SLDataFormat_PCM mFormat = {SL_DATAFORMAT_PCM,1,SL_SAMPLINGRATE_16,SL_PCMSAMPLEFORMAT_FIXED_16,SL_PCMSAMPLEFORMAT_FIXED_16,SL_SPEAKER_FRONT_CENTER,SL_BYTEORDER_LITTLEENDIAN};
    SLDataSink mAudSink = {&mQueue,&mFormat};
    LOGE("Configure Audio Recorder! OK!");
    const SLInterfaceID mId[1] = {SL_IID_ANDROIDSIMPLEBUFFERQUEUE};
    const SLboolean mReq[1] = {SL_BOOLEAN_TRUE};
    LOGE("Open Audio Device To Recorder! OK!");
    f_result = (*m_Engine)->CreateAudioRecorder(m_Engine,&m_RecordObject,&aud_src,&mAudSink,1,mId,mReq);
    return 0;
}
ringa_lee
ringa_lee

ringa_lee

全部回复(1)
伊谢尔伦

应该是linking时找不到OpenSLES库,检查你的.mk档看看

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号