首先最令我开心的是终于让我找到了问题的所在,而且被轻易的解决了!!!
在我们使用ns2的过程中,我们要做的的就是如何能让我们自己的协议代码嵌入到ns2的源码中,如果成功,那这是多么有成就感的事情,但这也是一项具有挑战性的事情,废话不多说了,我先描述下我出问题的经历:
1、编写了一个ping协议,放在ns-allinone-2.35/ns-2.35/myping目录下,以myping.{cc,h}
2、在makefile文件中写入编译的目标以及路径(上网查到http://blog.csdn.net/sxsj333/article/details/45582419中有详细介绍)
3、结果出现了这样的错误、
大家看到一个wanging:no class variable Agent/simple_trans::simple_port_,按照提示,我去查看tcl-object.tcl,发现上面写的很详细,在ns-default.tcl中未定义packetSize_这个变量,我定义以后,再次编译ns2,当然是make clean,然后 make。接下来,奇怪的事情发生了。。。。
我再次运行ns2,仍然出现上面的问题,网上几乎找遍了,也没有找到答案,因为我的程序代码都是对应着的。(如果你也有这样的问题,那你就中招了)
问题所在:
第一:在我们安装好ns-allinone包以后,我们一般会按照提示设定path路径在ns-allinone/bin目录下
第二:在初始编译我们会用root去编译源代码,编译完后没有更改过用户权限
这时,无论你怎么改源代码,都无济于事(我是这样的),最后连一个简单的c++与otcl绑定都不能用了,别着急,这时,你打开ns-allinone/ns-2.35目录下,你看看是不是里面有一个ns可执行文件,如果有,那么删除掉,然后直接make一下,在这个目录下运行./ns看看你的问题是否能解决?我的问题就这样解决了。
再次设置packetSize_,已经可以正常运行了。最后设定path路径,这个就不多说了,你会觉得很怪的事情发生,不过你换个角度就能解决,不多说了。
后悔没把图截下来,以上描述希望能描述的和你遇到的问题差不多吧!!
总结:1、看权限
2、看可执行文件是否生成等问题
3、查看源代码debug