我正在查询这个因为我不是C专家。看看是否有人解决过这个问题。我在pjsip lib中集成了g729,我从here获得了g729编解码器文件。我遵循的步骤:
首先,我在' pjmedia / src / pjmedia-codec / audio_codecs.c'中注册了g729。把这个
#if PJMEDIA_HAS_G729_CODEC
/* Register G729 */
status = pjmedia_codec_g729_init(endpt);
if (status != PJ_SUCCESS){
return status;
}
#endif
现在我有两个文件' pj_g729.c'和' pj_g729.h'根据我的知识,我必须在pjsip lib中复制。 所以我复制了' pj_g729.c'在' pjmedia / src / pjmedia-codec' &安培; ' pj_g729.h' in' / root / pjsip / trunk_2_allloweversionsuccess_and_widssl_g729 / pjmedia / include / pjmedia-codec'。
执行此操作后,我正在运行,因为它给出错误:'状态未定义的引用= pjmedia_codec_g729_init(endpt);'。
我也怀疑PJMEDIA_HAS_G729_CODEC'因为我还没有找到在库中声明的这个变量。所以我必须声明它吗?我很长时间都在努力。任何帮助都会很明显。
答案 0 :(得分:1)
您可以按照g7221在pjsip中添加的步骤进行操作。找出g722中提到的文件,并为g729编解码器添加额外的行。您可以将g729.a文件粘贴到pjsip的thpartparty库中。
答案 1 :(得分:1)
从编译器看到带有错误的行的事实来看,PJMEDIA_HAS_G729_CODEC
实际上是在某处定义的。否则,该行将被完全跳过。
问题是在C中,头文件必须#include
来声明函数。这会连接两个源文件。此处audio_codecs.c
和pj_g729.c
都应包含pj_g729.h
。
答案 2 :(得分:1)
您需要将pj_g729.h包含到pjmedia-codec.h中。
#include <pjmedia-codec/pj_g729.h>
这将把g729头文件包含到pjmedia-codec.h头文件中,并避免在status = pjmedia_codec_g729_init(endpt)时出现未定义引用错误;&#39;。