我是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
请帮助我解决此问题。
答案 0 :(得分:0)
默认情况下,OMNeT ++希望简单模块的C ++类的名称与NED中简单模块的名称相同。
您的简单模块的名称为my_node
,因此应使用C ++类my_node
。但是,您的代码中没有该类。
我建议在您的C ++代码中用CDNClass
更改my_node
的所有实例。
顺便说一句:在OMNeT ++中,有几个步骤可以生成一个简单模块所需的所有文件。选择File
| New
| Simple Module
。