简单项目运行的omnet ++问题(tiktok)

时间:2020-03-30 11:39:38

标签: omnet++

我是OMNeT ++的初学者,我编写了一个简单的项目并与OMNeT ++一起运行。我收到以下错误:

找不到类“ my_node”-可能未链接其代码,或者未在Register_Class()中注册该类,或者在模块和通道中未通过Define_Module()/ Define_Channel()注册该类-在网络设置过程中(omnetpp :: cModule)CDN(id = 1)中的模块

我创建了另一个项目,并再次编写了该项目,并得到了该错误。我的c ++代码如下:

#include <string.h>
#include <omnetpp.h>

using namespace omnetpp;

class CDNClass : public cSimpleModule
{
protected:
    virtual void initialize() override;
    virtual void handleMessage(cMessage *msg) override;
};

Define_Module(CDNClass);

void CDNClass::initialize(){
  if (strcmp("note1",getName())==0) {
        cMessage *msg = new cMessage("data");
        send(msg, "out");
   }
}

void CDNClass::handleMessage(cMessage *msg){
   send(msg,"out");
}

我的目标文件是:

package proje_shabake;

//
// TODO auto-generated type
//
simple my_node
    {
        gates:
            input in;
            output out;
    }
network CDN
{
submodules:
    node1: my_node {
        @display("p=40,54");
    }
    node2: my_node {
        @display("p=158,62");
    }
connections:
    node1.out --> node2.in;
    node2.out --> node1.in;
}

我的ini文件也是:

[General]
network = CDN

请帮助我解决此问题。

1 个答案:

答案 0 :(得分:0)

默认情况下,OMNeT ++希望简单模块的C ++类的名称与NED中简单模块的名称相同。
您的简单模块的名称为my_node,因此应使用C ++类my_node。但是,您的代码中没有该类。
我建议在您的C ++代码中用CDNClass更改my_node的所有实例。

顺便说一句:在OMNeT ++中,有几个步骤可以生成一个简单模块所需的所有文件。选择File | New | Simple Module