Я спрашиваю об этом, потому что я не эксперт C. Посмотрите, может ли кто-нибудь, кто обошел это, мог бы помочь. Я интегрирую g729 в pjsip lib, и я получил файлы кодеков g729 от Вот.Вот шаги, которые я выполнил:
Сначала я зарегистрировал g729 в ’pjmedia / src / pjmedia-codec / audio_codecs.c’, поставив этот
#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’ в ‘/ root / pjsip / trunk_2_allloweversionsuccess_and_widssl_g729 / pjmedia / include / pjmedia-codec’.
После этого я запускаю make, он выдает ошибку: ‘неопределенная ссылка в status = pjmedia_codec_g729_init (endpt);’.
Также у меня есть сомнения по поводу PJMEDIA_HAS_G729_CODEC, так как я не нашел эту переменную, объявленную в библиотеке. Так я должен объявить ее? Я долго борюсь за это. Любая помощь будет заметна.
вы можете следовать инструкциям, описанным как g7221, добавленный в pjsip. Найдите файлы, в которых упоминается g722, и добавьте дополнительные строки для кодека g729. Вы можете вставить файл g729.a в библиотеку thirtparty pjsip.
Из того факта, что компилятор видит строку с ошибкой, следует, что PJMEDIA_HAS_G729_CODEC
на самом деле определяется где-то. В противном случае линия была бы пропущена напрямую.
Проблема в том, что в C заголовочные файлы должны быть #include
буду объявлять функции. Это соединяет два исходных файла. Вот audio_codecs.c
а также pj_g729.c
оба должны включать pj_g729.h
,
Вам нужно включить pj_g729.h в pjmedia-codec.h.
#include <pjmedia-codec/pj_g729.h>
Это будет включать файл заголовка g729 в заголовок pjmedia-codec.h и позволит избежать ошибки неопределенной ссылки в status = pjmedia_codec_g729_init (endpt); ‘.