Qt:pjsip链接问题

时间:2015-04-20 13:08:57

标签: c++ linux qt sip pjsip

我正在尝试使用qt编写一个软电话。许多论坛和资源,包括stackoverflow,都建议使用pjsip库。所以我决定遵循这个建议并使用它。 首先,为了清楚我的帖子,我的操作系统是linux(KUbuntu是percise),我使用的是Qt 5.4.1和Qt Creator 3.3.2。

另外,我使用他们网站上的说明构建了pjsip静态库:http://trac.pjsip.org/repos/wiki/Getting-Started/Autoconf

我在使用qt连接pjsip静态库时遇到了一些麻烦。我搜索过这个问题,并没有在这个网站或任何地方找到答案。论坛上有一些主题,但没有人给出答案。

这是我的qt .pro文件:

TEMPLATE = app

QT += qml quick widgets

SOURCES += main.cpp

RESOURCES += qml.qrc

INCLUDEPATH += $$_PRO_FILE_PWD_/pjsip_headers

LIBS += -L$$_PRO_FILE_PWD_/pjsip_libs

linux-g++-64:LIBS += -lpjsua-x86_64-unknown-linux.gnu \
                     -lpjsip-ua-x86_64-unknown-linux.gnu\
                     -lpjsip-simple-x86_64-unknown-linux.gnu \
                     -lpjsip-x86_64-unknown-linux.gnu \
                     -lpjmedia-codec-x86_64-unknown-linux.gnu \
                     -lpjmedia-x86_64-unknown-linux.gnu \
                     -lpjmedia-codec-x86_64-unknown-linux.gnu \
                     -lpjmedia-audiodev-x86_64-unknown-linux.gnu \
                     -lpjmedia-videodev-x86_64-unknown-linux.gnu \
                     -lpjnath-x86_64-unknown-linux.gnu \
                     -lpjlib-util-x86_64-unknown-linux.gnu \
                     -lpj-x86_64-unknown-linux.gnu \
                     -lportaudio-x86_64-unknown-linux.gnu \
                     -lgsmcodec-x86_64-unknown-linux.gnu \
                     -lilbccodec-x86_64-unknown-linux.gnu \
                     -lspeex-x86_64-unknown-linux.gnu \
                     -lresample-x86_64-unknown-linux.gnu \
                     -lsrtp-x86_64-unknown-linux.gnu \
                     -lg7221codec-x86_64-unknown-linux.gnu \
                     -lopenh264 \
                     -lpjsua2-x86_64-unknown-linux.gnu 

QML_IMPORT_PATH =

include(deployment.pri)

这就是问题所在:当我尝试使用上面的.pro文件构建项目时,一切正常,直到我尝试使用此库中任何类的某个函数或对象。如果我这样做,我会得到许多未定义的引用错误。

Pjsip手册仅说明如何使用此库中的GNU工具构建您自己的应用程序:http://trac.pjsip.org/repos/wiki/Getting_Started_Using。但它涉及编辑Makefile,它由qma中的qmake自动生成。

我只是坚持这个问题而且我不知道我能做些什么呢。我读到了关于这个库的链接顺序,同时将它包含在你的qt .pro文件中,但我尝试了很多组合,但没有帮助。 另外,我读到可能需要使用QMAKE变量根据如何使用GNU工具构建自己的应用程序的pjsip说明在qt .pro文件中设置CFLAGS和LDFLAGS。 我甚至下载了使用pjsip库的qt项目,例如QjSimple,但我没有在他们的qt .pro文件设置中找到任何新内容。

这是他们的qt .pro文件:

DEFINES -= UNICODE
TEMPLATE = app
TARGET = QjSimple
QT += core \
      gui \
      xml \
      network
HEADERS += buddy.h \
           PjCallback.h \
           accountdialog.h \
           debugdialog.h \
           addbuddydialog.h \
           imwidget.h \
           qjsimple.h
SOURCES += buddy.cpp \
           PjCallback.cpp \
           accountdialog.cpp \
           debugdialog.cpp \
           addbuddydialog.cpp \
           imwidget.cpp \
           main.cpp \
           qjsimple.cpp
FORMS += accountdialog.ui \
         debugdialog.ui \
         addbuddydialog.ui \
         imwidget.ui \
         qjsimple.ui
RESOURCES += icons.qrc
win32-g++:RC_FILE = appicon.rc
INCLUDEPATH += ../pjproject-1.8.10/pjlib/include \
               ../pjproject-1.8.10/pjlib-util/include \
               ../pjproject-1.8.10/pjnath/include \
               ../pjproject-1.8.10/pjmedia/include \
               ../pjproject-1.8.10/pjsip/include
LIBS += -L../pjproject-1.8.10/pjlib/lib \
        -L../pjproject-1.8.10/pjlib-util/lib \
        -L../pjproject-1.8.10/pjnath/lib \
        -L../pjproject-1.8.10/pjmedia/lib \
        -L../pjproject-1.8.10/pjsip/lib \
        -L../pjproject-1.8.10/third_party/lib

# INCLUDEPATH += ../pjproject-1.5.5/pjlib/include \
# ../pjproject-1.5.5/pjlib-util/include \
# ../pjproject-1.5.5/pjnath/include \
# ../pjproject-1.5.5/pjmedia/include \
# ../pjproject-1.5.5/pjsip/include
# LIBS += -L../pjproject-1.5.5/pjlib/lib \
# -L../pjproject-1.5.5/pjlib-util/lib \
# -L../pjproject-1.5.5/pjnath/lib \
# -L../pjproject-1.5.5/pjmedia/lib \
# -L../pjproject-1.5.5/pjsip/lib \
# -L../pjproject-1.5.5/third_party/lib
# INCLUDEPATH += ../pjproject-1.4/pjlib/include \
# ../pjproject-1.4/pjlib-util/include \
# ../pjproject-1.4/pjnath/include \
# ../pjproject-1.4/pjmedia/include \
# ../pjproject-1.4/pjsip/include
# LIBS += -L../pjproject-1.4/pjlib/lib \
# -L../pjproject-1.4/pjlib-util/lib \
# -L../pjproject-1.4/pjnath/lib \
# -L../pjproject-1.4/pjmedia/lib \
# -L../pjproject-1.4/pjsip/lib \
# -L../pjproject-1.4/third_party/lib
# win32-g++:LIBS += -L../openssl-0.9.8g
win32-g++:LIBS += -L../OpenSSL/lib/mingw
win32-g++:LIBS += -lpjsua-i686-pc-mingw32 \
                  -lpjsip-ua-i686-pc-mingw32 \
                  -lpjsip-simple-i686-pc-mingw32 \
                  -lpjsip-i686-pc-mingw32 \
                  -lpjmedia-codec-i686-pc-mingw32 \
                  -lpjmedia-i686-pc-mingw32 \
                  -lpjmedia-codec-i686-pc-mingw32 \
                  -lpjmedia-audiodev-i686-pc-mingw32 \
                  -lpjnath-i686-pc-mingw32 \
                  -lpjlib-util-i686-pc-mingw32 \
                  -lpj-i686-pc-mingw32 \
                  -lportaudio-i686-pc-mingw32 \
                  -lgsmcodec-i686-pc-mingw32 \
                  -lilbccodec-i686-pc-mingw32 \
                  -lspeex-i686-pc-mingw32 \
                  -lresample-i686-pc-mingw32 \
                  -lmilenage-i686-pc-mingw32 \
                  -lsrtp-i686-pc-mingw32 \
                  -lm \
                  -lwinmm \
                  -lole32 \
                  -lws2_32 \
                  -lwsock32 \
                  -lssl \
                  -lcrypto \
                  -lgdi32
linux-g++:LIBS += -lpjsua-i686-pc-linux-gnu \
                  -lpjsip-ua-i686-pc-linux-gnu \
                  -lpjsip-simple-i686-pc-linux-gnu \
                  -lpjsip-i686-pc-linux-gnu \
                  -lpjmedia-codec-i686-pc-linux-gnu \
                  -lpjmedia-i686-pc-linux-gnu \
                  -lpjmedia-codec-i686-pc-linux-gnu \
                  -lpjmedia-audiodev-i686-pc-linux-gnu \
                  -lpjnath-i686-pc-linux-gnu \
                  -lpjlib-util-i686-pc-linux-gnu \
                  -lpj-i686-pc-linux-gnu \
                  -lportaudio-i686-pc-linux-gnu \
                  -lgsmcodec-i686-pc-linux-gnu \
                  -lilbccodec-i686-pc-linux-gnu \
                  -lspeex-i686-pc-linux-gnu \
                  -lresample-i686-pc-linux-gnu \
                  -lmilenage-i686-pc-linux-gnu \
                  -lsrtp-i686-pc-linux-gnu \
                  -lm \
                  -lpthread \
                  -lssl \
                  -lasound \
                  -luuid
linux-g++-64:LIBS += -lpjsua-x86_64-unknown-linux-gnu \
                     -lpjsip-ua-x86_64-unknown-linux-gnu \
                     -lpjsip-simple-x86_64-unknown-linux-gnu \
                     -lpjsip-x86_64-unknown-linux-gnu \
                     -lpjmedia-codec-x86_64-unknown-linux-gnu \
                     -lpjmedia-x86_64-unknown-linux-gnu \
                     -lpjmedia-codec-x86_64-unknown-linux-gnu \
                     -lpjmedia-audiodev-x86_64-unknown-linux-gnu \
                     -lpjnath-x86_64-unknown-linux-gnu \
                     -lpjlib-util-x86_64-unknown-linux-gnu \
                     -lpj-x86_64-unknown-linux-gnu \
                     -lportaudio-x86_64-unknown-linux-gnu \
                     -lgsmcodec-x86_64-unknown-linux-gnu \
                     -lilbccodec-x86_64-unknown-linux-gnu \
                     -lspeex-x86_64-unknown-linux-gnu \
                     -lresample-x86_64-unknown-linux-gnu \
                     -lmilenage-x86_64-unknown-linux-gnu \
                     -lsrtp-x86_64-unknown-linux-gnu \
                     -lm \
                     -lpthread \
                     -lssl \
                     -lasound \
                     -luuid
macx-g++:LIBS += -lpjsua-i386-apple-darwin9.7.1 \
                 -lpjsip-ua-i386-apple-darwin9.7.1 \
                 -lpjsip-simple-i386-apple-darwin9.7.1 \
                 -lpjsip-i386-apple-darwin9.7.1 \
                 -lpjmedia-i386-apple-darwin9.7.1 \
                 -lpjmedia-i386-apple-darwin9.7.1 \
                 -lpjmedia-codec-i386-apple-darwin9.7.1 \
                 -lpjmedia-audiodev-i386-apple-darwin9.7.1 \
                 -lpjnath-i386-apple-darwin9.7.1 \
                 -lpjlib-util-i386-apple-darwin9.7.1 \
                 -lpj-i386-apple-darwin9.7.1 \
                 -lportaudio-i386-apple-darwin9.7.1 \
                 -lgsmcodec-i386-apple-darwin9.7.1 \
                 -lilbccodec-i386-apple-darwin9.7.1 \
                 -lspeex-i386-apple-darwin9.7.1 \
                 -lresample-i386-apple-darwin9.7.1 \
                 -lmilenage-i386-apple-darwin9.7.1 \
                 -lsrtp-i386-apple-darwin9.7.1 \
                 -lm \
                 -lpthread \
                 -lssl \
                 -lcrypto \
                 -framework \
                 CoreAudio \
                 -framework \
                 AudioToolbox \
                 -framework \
                 AudioUnit
OTHER_FILES += Changelog

他们的.pro文件中没有新内容。 所以我只是不知道从哪里找到解决方案。我希望我提供了足够的信息。正如我上面提到的,我没有发现任何有用的问题。

也许有另一种方法可以使用qt构建软件,但是我发现pjsip库是做这件事的最佳决策之一。任何信息都将不胜感激。

0 个答案:

没有答案