ns如何进入虚拟系统,如何打开nsa

  ns如何进入虚拟系统,如何打开nsa

  问题描述:

  如果在ns3中创建自己的程序,在scratch下创建自己的单文件程序,waf可以成功编译运行,但是如果创建多个。cc文件,它不能在ns3附带的waf中成功编译。原因是ns3拥有的waf不找依赖,不知道怎么添加。

  解决方法:

  模仿src下modules的方法,把自己写的其他非主文件放到一个模块里,用ns3的waf编译时自动编译这个模块,这样就能正确找到头文件和链接。

  具体步骤:

  进入CDsrc//src源文件夹。

  编辑VIMwscript//ns3的wscript

  在all_modules下用这种格式添加自己的模块名,也就是以后要创建的文件夹的名称。这里添加了普通工作,最后

  “共同工作”

  保存和推送文件。

  MK common-work//创建自己的文件夹

  光盘共同工作

  Mkdir模型//类似于其他模块创建的文件夹。你自己的头文件可以放在这里。cc文件也是。

  举一个简单的打印函数的例子。(myzzg.h))))))).

  #ifndef MYZZG_H

  #定义MYZZG_H 1

  void my print(;

  #endif

  直接在common-work文件夹里写自己的库函数:(myzzg.cc))))。

  #包括

  #include model/myzzg.h

  作废我的指纹(

  {

  标准:cout

  }

  将wscript和waf文件从其他模块复制到该文件夹,然后修改wscript。

  简单的例子如下(

  # #-*-模式:python;py-indent-offset:4;缩进-制表符-模式:nil编码:utf-8;-*-

  导入os.path

  defbuild(建筑) :

  #不启用“不做任何事情”功能.

  #如果不是bld.env [ enable _ emu ]:

  #返回

  module=bld . create _ ns3 _ module(zzg),[network]).

  module.source=[

   myzzg.cc ,

  ]

  headers=bld . new _ task _ gen(ns3 header))。

  headers.module=zzg

  headers.source=[

  型号/myzzg.h ,

  ]

  bld.ns3_python_bindings(

  回到scratch自己写主程序,调用上述库时正确包含头文件。

  比如如下图。(zzg.cc))。

  #包括

  int main())

  {

  我的打印(;

  0;

  }

  实施。/waf - run zzg

  你可以看到打印出来的句子。

  分析原理是,在定制模块中,用ns3的waf编译时,把自己定义的头文件复制到build/debug/ns3/,而。对应模块的cc文件对应于。o档。

  注:1。模块中的wscript文件指定模块中头文件的复制和。抄送文件。见上例。

  2.复制到ns3的头文件的名称与模型下的名称相同。所以在scratch中使用时,如果不能顺利获取包含的头文件,可以查看编译后运行时的输出信息,也可以去文件夹看看是否已经复制到那里。

  3.当前修改的wscript有问题。编译有问题,但不影响执行。例如,在上面的例子中,zzg-module.h文件是在ns3下生成的,它包含相应的错误消息。慢慢来。不影响大局。

  Ns3在自己的模块中使用其他链接库。

  (1)在本模块的wscript开头添加以下代码。

  导入选项

  ef会议:

  conf.env.append _ value(链接标志,[-lmysqlclient]).

  如果使用自己的链接库而不是-Lmysqlclient,并且需要指定基于链接的位置,请先添加-l部门。

  2)编译src模块时,调用该模块的config。

  vim src/wscript

  在defconfigure[conf]:函数下添加

  我的模型).

  共享给:

  2012-02-10 18:33

  参考6633

  给…作注解

ns如何进入虚拟系统,如何打开nsa