求大神,帮忙解决!

若歌 2017-02-22 07:16:01
[code=c][/co

报错::
.cpp:80: error: undefined reference to `_imp___ZN7jrtplib17RTPGetErrorStringB5cxx11Ei'
.cpp:88: error: undefined reference to `_imp___ZN7jrtplib17RTPGetErrorStringB5cxx11Ei'
collect2.exe:-1: error: error: ld returned 1 exit status
显示找不到这个函数RTPGetErrorString()可是头文件里我已经包含了啊

pro文件库里包含文件如下:
LIBS += -lWs2_32
LIBS += $$PWD/lib/libjrtplib.dll.a\

INCLUDEPATH += $$PWD/include/jrtplib\
$$PWD/include/jthread\
$$PWD/include

SOURCES += main.cpp\
mainwindow.cpp \
crtpthread.cpp

HEADERS += mainwindow.h \
crtpthread.h

FORMS += mainwindow.uide]


.h文件
#include <QThread>
#include "rtpsession.h"
#include "rtpudpv4transmitter.h"
#include "rtpipv4address.h"
#include "rtpsessionparams.h"
#include "rtperrors.h"
#include "rtppacket.h"

using namespace jrtplib;
class CRtpThread : public QThread
{
Q_OBJECT
public:
CRtpThread();
~CRtpThread();
void rtpSendData(uchar *dataBuf, int dataLen);

private:
void dispatch(uchar *dataBuf, int dataLen);
void initialRTP(uint8_t *ip);

protected:
void run();

private:
volatile bool m_runFlag;
RTPSession m_session;
RTPSessionParams m_sessionparams;
RTPUDPv4TransmissionParams m_transparams;

signals:
void signalRtpData(uchar *dataBuf,int dataLen);
};

#endif // CRTPTHREAD_H
.c文件
#include "crtpthread.h"
#include <QDebug>
CRtpThread::CRtpThread():
m_runFlag(true)
{
#ifdef RECEIVER
uint8_t destIP[]={192,168,99,149};
#else
uint8_t destIP[]={192,168,99,149};
#endif
initialRTP(destIP);
}

CRtpThread::~CRtpThread()
{
m_session.BYEDestroy(RTPTime(10,0),0,0);
m_runFlag=false;
#ifdef WIN32
WSACleanup();
#endif // WIN32
}

void CRtpThread::run()
{
while(m_runFlag)
{
usleep(1);
m_session.BeginDataAccess();
if (m_session.GotoFirstSourceWithData())
{
do
{
RTPPacket *pack;
while ((pack = m_session.GetNextPacket()) != NULL)
{
int recvSize = pack->GetPayloadLength();
uint8_t * recvData=pack->GetPayloadData();
dispatch(recvData, recvSize);
m_session.DeletePacket(pack);
}
} while (m_session.GotoNextSourceWithData());
}

m_session.EndDataAccess();

#ifndef RTP_SUPPORT_THREAD
int status = m_session.Poll();
if (status < 0)
{
qDebug()<< RTPGetErrorString(status).c_str();
}
#endif
}
}

void CRtpThread::dispatch(uchar *dataBuf, int dataLen)
{
emit signalRtpData(dataBuf,dataLen);
#ifdef RECEIVER
//将收到的数据转发
rtpSendData(dataBuf, dataLen);
#endif
}

void::CRtpThread::initialRTP(uint8_t *ip)
{
#ifdef WIN32
WSADATA dat;
WSAStartup(MAKEWORD(2,2),&dat);
#endif // WIN32
//每秒发送10个样本
m_sessionparams.SetOwnTimestampUnit(1.0/10.0);
//设置本地端口
m_transparams.SetPortbase(27000);

int status = m_session.Create(m_sessionparams,&m_transparams);

if (status < 0)
{
qDebug()<< RTPGetErrorString(status).c_str();
//RTPGetErrorString(status).c_str();
}
//设置目的IP和端口
RTPIPv4Address addr(ip,27000);
status = m_session.AddDestination(addr);
if (status < 0)
{
qDebug()<< RTPGetErrorString(status).c_str();
}
//这里设置了默认值,发送的时候只用指定数据和长度SendPacket((void *)dataBuf,dataLen)。
//否则发送时需指定后三个参数,例如SendPacket((void *)dataBuf,dataLen,0,false,10)。
m_session.SetDefaultPayloadType(0);
m_session.SetDefaultMark(false);
m_session.SetDefaultTimestampIncrement(10.0);
m_session.SetMaximumPacketSize(65535);
}

void CRtpThread::rtpSendData(uchar *dataBuf, int dataLen)
{
int status = m_session.SendPacket((void *)dataBuf,dataLen);
if (status < 0)
{
qDebug() << RTPGetErrorString(status).c_str();
}
}
...全文
255 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
若歌 2017-02-24
  • 打赏
  • 举报
回复
引用 3 楼 qq_36568418 的回复:
[quote=引用 1 楼 ipqtjmqj 的回复:] LIBS += -lWs2_32 LIBS += $$PWD/lib/libjrtplib.dll.a\ 检查上面的库中有没有RTPGetErrorString函数, 可以用nm命令工具查看
我用的是windows下的[/quote] 不是啊 我编译的动态库,用的mingGW32,
ipqtjmqj 2017-02-24
  • 打赏
  • 举报
回复
引用 3 楼 qq_36568418 的回复:
[quote=引用 1 楼 ipqtjmqj 的回复:] LIBS += -lWs2_32 LIBS += $$PWD/lib/libjrtplib.dll.a\ 检查上面的库中有没有RTPGetErrorString函数, 可以用nm命令工具查看
我用的是windows下的[/quote] windows下的怎么是.a, 应该是.dll
若歌 2017-02-23
  • 打赏
  • 举报
回复
引用 1 楼 ipqtjmqj 的回复:
LIBS += -lWs2_32 LIBS += $$PWD/lib/libjrtplib.dll.a\ 检查上面的库中有没有RTPGetErrorString函数, 可以用nm命令工具查看
我用的是windows下的
若歌 2017-02-23
  • 打赏
  • 举报
回复
引用 1 楼 ipqtjmqj 的回复:
LIBS += -lWs2_32 LIBS += $$PWD/lib/libjrtplib.dll.a\ 检查上面的库中有没有RTPGetErrorString函数, 可以用nm命令工具查看
有的啊 我进去看了,就是不识别
ipqtjmqj 2017-02-23
  • 打赏
  • 举报
回复
LIBS += -lWs2_32 LIBS += $$PWD/lib/libjrtplib.dll.a\ 检查上面的库中有没有RTPGetErrorString函数, 可以用nm命令工具查看

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧