проблема с omnet ++ при простом запуске проекта (тикток) - PullRequest
0 голосов
/ 30 марта 2020

Я новичок в 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");
}

И мой файл ned:

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 голосов
/ 30 марта 2020

По умолчанию OMNeT ++ ожидает, что класс C ++ простого модуля имеет то же имя, что и имя простого модуля в NED.
Имя вашего простого модуля my_node, поэтому класс C ++ my_node ожидается. Однако в вашем коде нет этого класса.
Я предлагаю изменить в вашем коде C ++ все экземпляры CDNClass на my_node.

Кстати: в OMNeT ++ есть опция для генерации Все файлы требуются простым модулем в несколько шагов. Выберите File | New | Simple Module.

...