PJSIP 2.5.5 неопределенная ссылка на libyuv

#android #c #qt #pjsip

#Android #c #qt #pjsip

Вопрос:

Я пытаюсь скомпилировать свой проект с помощью PJSIP 2.5.5, включая поддержку видео для Android с Qt 5.7.

Включает в себя следующие библиотеки и включает:

 INCLUDEPATH  =  $$PWD/pjproject-2.5.5/third_party/yuv/include 
            $$PWD/pjproject-2.5.5/pjsip/include 
            $$PWD/pjproject-2.5.5/pjlib/include 
            $$PWD/pjproject-2.5.5/pjlib-util/include 
            $$PWD/pjproject-2.5.5/pjmedia/include 
            $$PWD/pjproject-2.5.5/pjnath/include 
            $$PWD/pjproject-2.5.5/openh264-build-output/libs/armeabi-v7a/include/wels
LIBS         =  -L$$PWD/pjproject-2.5.5/third_party/lib 
            -L$$PWD/pjproject-2.5.5/lib 
            -L$$PWD/pjproject-2.5.5/pjlib/lib 
            -L$$PWD/pjproject-2.5.5/pjlib-util/lib 
            -L$$PWD/pjproject-2.5.5/pjmedia/lib 
            -L$$PWD/pjproject-2.5.5/pjnath/lib 
            -L$$PWD/pjproject-2.5.5/pjsip/lib 
            -L$$PWD/pjproject-2.5.5/pjnath/lib 
            -L$$PWD/pjproject-2.5.5/openh264-build-output/libs/armeabi-v7a/lib 
            -lyuv-arm-unknown-linux-androideabi 
            -lpjmedia-audiodev-arm-unknown-linux-androideabi 
            -lpjmedia-videodev-arm-unknown-linux-androideabi 
            -lpjsip-arm-unknown-linux-androideabi 
            -lpjsua2-arm-unknown-linux-androideabi 
            -lpjsua-arm-unknown-linux-androideabi 
            -lpjsip-simple-arm-unknown-linux-androideabi 
            -lpjsdp-arm-unknown-linux-androideabi 
            -lpjmedia-arm-unknown-linux-androideabi 
            -lpjsip-arm-unknown-linux-androideabi 
            -lpjmedia-audiodev-arm-unknown-linux-androideabi 
            -lpjsip-ua-arm-unknown-linux-androideabi 
            -lpjnath-arm-unknown-linux-androideabi 
            -lpjmedia-codec-arm-unknown-linux-androideabi 
            -lpj-arm-unknown-linux-androideabi 
            -lpjmedia-arm-unknown-linux-androideabi 
            -lilbccodec-arm-unknown-linux-androideabi 
            -lgsmcodec-arm-unknown-linux-androideabi 
            -lspeex-arm-unknown-linux-androideabi 
            -lresample-arm-unknown-linux-androideabi 
            -lsrtp-arm-unknown-linux-androideabi 
            -lpj-arm-unknown-linux-androideabi 
            -lpjlib-util-arm-unknown-linux-androideabi 
            -lopenh264
  

Во время компиляции я получаю следующие ошибки:

 C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjsip/lib/libpjsua-arm-unknown-linux-androideabi.a(pjsua_vid.o):pjsua_vid.c:function pjsua_vid_subsys_init: error: undefined reference to 'pjmedia_vid_dev_subsys_init'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjsip/lib/libpjsua-arm-unknown-linux-androideabi.a(pjsua_vid.o):pjsua_vid.c:function pjsua_vid_subsys_destroy: error: undefined reference to 'pjmedia_vid_dev_subsys_shutdown'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_i420: error: undefined reference to 'RGB24ToI420'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_i420: error: undefined reference to 'ABGRToI420'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_i420: error: undefined reference to 'ARGBToI420'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_i420: error: undefined reference to 'YUY2ToI420'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_i420: error: undefined reference to 'UYVYToI420'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_i420: error: undefined reference to 'I422ToI420'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_i420: error: undefined reference to 'I420ToRGB24'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_i420: error: undefined reference to 'I420ToABGR'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_i420: error: undefined reference to 'I420ToARGB'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_i420: error: undefined reference to 'I420ToYUY2'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_i420: error: undefined reference to 'I420ToUYVY'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_i420: error: undefined reference to 'I420ToI422'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_i420: error: undefined reference to 'I420Scale'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_bgra: error: undefined reference to 'RGB24ToARGB'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_bgra: error: undefined reference to 'ABGRToARGB'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_bgra: error: undefined reference to 'YUY2ToARGB'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_bgra: error: undefined reference to 'UYVYToARGB'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_bgra: error: undefined reference to 'I422ToARGB'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_to_bgra: error: undefined reference to 'I420ToARGB'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_bgra: error: undefined reference to 'ARGBToRGB24'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_bgra: error: undefined reference to 'ARGBToABGR'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_bgra: error: undefined reference to 'ARGBToYUY2'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_bgra: error: undefined reference to 'ARGBToUYVY'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_bgra: error: undefined reference to 'ARGBToI422'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_bgra: error: undefined reference to 'ARGBToI420'
C:/Users/df/Desktop/Sources/Qt/projectA/pjproject-2.5.5/pjmedia/lib/libpjmedia-arm-unknown-linux-androideabi.a(converter_libyuv.o):converter_libyuv.c:conv_from_bgra: error: undefined reference to 'ARGBScale'
collect2.exe: error: ld returned 1 exit status
  

Похоже, что libyuv по какой-то причине не распознается? «Неопределенные» методы присутствуют в файлах заголовков. Любая идея приветствуется! 🙂

Комментарии:

1. Те же проблемы при использовании внешней версии yuv через —with-external-yuv

Ответ №1:

Порядок библиотек был неправильным. Правильный порядок:

 LIBS     =  -L$$PWD/pjproject-2.5.5/third_party/lib 
        -L$$PWD/pjproject-2.5.5/lib 
        -L$$PWD/pjproject-2.5.5/pjlib/lib 
        -L$$PWD/pjproject-2.5.5/pjlib-util/lib 
        -L$$PWD/pjproject-2.5.5/pjmedia/lib 
        -L$$PWD/pjproject-2.5.5/pjnath/lib 
        -L$$PWD/pjproject-2.5.5/pjsip/lib 
        -L$$PWD/pjproject-2.5.5/pjnath/lib 
        -L$$PWD/pjproject-2.5.5/third_party/openh264/libs/armeabi-v7a/lib 
        -lpjsua2-arm-unknown-linux-androideabi 
        -lstdc   
        -lpjsua-arm-unknown-linux-androideabi 
        -lpjsip-ua-arm-unknown-linux-androideabi 
        -lpjsip-simple-arm-unknown-linux-androideabi 
        -lpjsip-arm-unknown-linux-androideabi 
        -lpjmedia-codec-arm-unknown-linux-androideabi 
        -lpjmedia-arm-unknown-linux-androideabi 
        -lpjmedia-videodev-arm-unknown-linux-androideabi 
        -lpjmedia-audiodev-arm-unknown-linux-androideabi 
        -lpjmedia-arm-unknown-linux-androideabi 
        -lpjnath-arm-unknown-linux-androideabi 
        -lpjlib-util-arm-unknown-linux-androideabi  
        -lsrtp-arm-unknown-linux-androideabi 
        -lresample-arm-unknown-linux-androideabi 
        -lgsmcodec-arm-unknown-linux-androideabi 
        -lspeex-arm-unknown-linux-androideabi 
        -lilbccodec-arm-unknown-linux-androideabi 
        -lg7221codec-arm-unknown-linux-androideabi 
        -lyuv-arm-unknown-linux-androideabi  
        -lpj-arm-unknown-linux-androideabi 
        -lopenh264 
        -lstdc   
        -lm 
        -lgnustl_static  
        -lc 
        -lgcc 
        -ldl 
        -lOpenSLES 
        -llog 
        -lGLESv2 
        -lEGL 
        -landroid