ns(来源于“network simulator”)是一系列离散事件网络模拟器,包括ns-1、ns-2和ns-3。他们主要应用于研究和教学。ns-3是自由软件,以GNU GPLv2协议分发。——百度百科
熟悉ns的朋友都知道,使用build.py编译时会先编译NetAnim,再编译ns3本体,而最新版的ns3,有时由于库的版本太新,或者与本机版本不同,编译会报错,本文介绍了作者编译netanim-3.109时的报错以及解决:
错误1 animatorscene.cpp:199:56: error: ‘class QFontMetrics’ has no member named ‘horizontalAdvance’
QT库版本问题,ns3开发者手里的qt库里面有horizontalAdvance,而我的没有
我的qt版本如下:
sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
qtchooser is already the newest version (64-ga1b6736-5).
qt5-qmake is already the newest version (5.9.5+dfsg-0ubuntu2.6).
qtbase5-dev is already the newest version (5.9.5+dfsg-0ubuntu2.6).
qtbase5-dev-tools is already the newest version (5.9.5+dfsg-0ubuntu2.6)
替换水平长度函数为宽度函数即可(width函数我的QT有)
错误2 qtpropertybrowser/src/qtpropertymanager.cpp:1285:45: error: ‘wildcardToRegularExpression’ is not a member of ‘QRegularExpression’
与上面的问题类似,不支持通配符
//Data() : regExp(QRegularExpression::wildcardToRegularExpression(QString(QLatin1Char('*')))),
// echoMode(QLineEdit::Normal), readOnly(false)
//{
//}
Data() : regExp(QString(QLatin1Char('*'))),
echoMode(QLineEdit::Normal), readOnly(false)
{
}
错误3 qtpropertybrowser/src/qtpropertymanager.cpp:1454:51: error: ‘anchoredPattern’ is not a member of ‘QRegularExpression’
判断数据有效但与与其不同就返回,这里参照以前的版本该了写法
//if (data.regExp.isValid())
//{
// QRegularExpression re(QRegularExpression::anchoredPattern(data.regExp.pattern()));
// QRegularExpressionMatch match = re.match(val);
// if (!match.hasMatch())
// return;
//}
if (data.regExp.isValid() && !data.regExp.match(val).hasMatch())
return;