模块不在Node内(Node必须在ned模块中用@node属性标记)

时间:2016-03-09 16:26:56

标签: c++ omnet++

我困在这个问题好几天了。 每当我运行OMNet ++模拟时,它都会给我一个运行时异常

  

“模块中的错误(cModule)CompleteScenarioIncludingGateway(id = 1)   在网络初始化期间:模块不在节点内(节点必须   在ned模块中用@node属性标记。“

我想知道它是什么意思以及如何解决它。

提前致谢。

1 个答案:

答案 0 :(得分:1)

表示网络中节点的每个模块(例如主机,路由器)都应标有@node属性(在最新版本的INET中,它被称为@networkNode而不是@node)。以下是INET的NodeBase.ned中的完成方式:

module NodeBase like INetworkNode
{
    parameters:
        @networkNode
        @display("bgb=,448");
        ...

@networkNode实际上是一个标记,因此放置在节点内的任何模块都可以在模块父链中向上移动,并找到哪个模块代表它所驻留的实际主机。这有助于主机内的模块更容易导航。例如,如果模块对主机的物理位置感兴趣,它会在模块链上向上行进,并在每次检查此模块是否具有@networkNode属性时进行检查。如果确实如此,那么按照惯例,它应该有一个名为"移动性"的子模块。可以用来检索位置。