Omnet++ 在OMNET++&引用;对“afdx::wdrr::buff(afdx::AFDXMessage)”的未定义引用;错误

Omnet++ 在OMNET++&引用;对“afdx::wdrr::buff(afdx::AFDXMessage)”的未定义引用;错误,omnet++,Omnet++,我曾试图通过定义我自己的类wdrr,在OMNET++中编写我自己的调度逻辑,但在我编写时出现了一些错误,如未定义的引用,我是OMNET++的新手,因此请任何人进一步建议如何做以及如何解决此问题 注意:我附上了我所做的事情和错误 事先非常感谢 #include "RegulatorLogic.h" #include "AFDXMessage_m.h" #include <iostream> #include <math.h> #in

我曾试图通过定义我自己的类wdrr,在OMNET++中编写我自己的调度逻辑,但在我编写时出现了一些错误,如未定义的引用,我是OMNET++的新手,因此请任何人进一步建议如何做以及如何解决此问题

注意:我附上了我所做的事情和错误

事先非常感谢

#include "RegulatorLogic.h"

#include "AFDXMessage_m.h"
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <queue>
#include <vector>
#include <algorithm>

using namespace std;



class wdrr : public cSimpleModule
{
public:
    int basequantum; // Basequantum 
    int priority;  // priority for the queues
    int weight;    // weights assigned as per priority of ques
    int pktlength;  // packet length of afdx data received in queue
    int cnstwtqnt;  // constant weight count
    int cal_wtqnt;  // cal weight cnt
    int dfcntr;   // difict counter
    cQueue buff(afdx::AFDXMessage);  // queue of afdx data
};
class wdrr obj;
std::vector<wdrr> queu;

bool send_msg(void);

namespace afdx {


Define_Module(RegulatorLogic);

void RegulatorLogic::initialize()
{
    // TODO - Generated method body
}

void RegulatorLogic::handleMessage(cMessage *msg)
{
    afdx::AFDXMessage *afdxMsg = check_and_cast<afdx::AFDXMessage *>(msg);

     EV_INFO << "NetworkID " << afdxMsg->getNetworkId() << endl;
     EV_INFO << "EquipmentId " << afdxMsg->getEquipmentId() << endl;
     EV_INFO << "InterfaceId " << afdxMsg->getInterfaceId() << endl;
     EV_INFO << "NumChildren " << afdxMsg->getNumChildren() << endl;
     EV_INFO << "PartitionId " << afdxMsg->getPartitionId() << endl;
     EV_INFO << "SeqNum " << afdxMsg->getSeqNum() << endl;
     EV_INFO << "UdpDestPort " << afdxMsg->getUdpDestPort() << endl;
     EV_INFO << "UdpSrcPort " << afdxMsg->getUdpSrcPort() << endl;
     EV_INFO << "VirtualLinkId " << afdxMsg->getVirtualLinkId() << endl;
     EV_INFO << "PacketLength " << afdxMsg->getPacketLength() << endl;


     {
         {
            obj.basequantum = afdxMsg->getBasequantum();
            obj.weight = afdxMsg->getWeight();
            obj.priority = afdxMsg->getPriority();
            obj.cnstwtqnt = ((obj.basequantum) * (obj.weight));
            obj.cal_wtqnt = 0;
            obj.dfcntr = 0;
            obj.pktlength = 0;
            obj.buff(*afdxMsg).insert(afdxMsg);
//            obj.buff().insert(afdxMsg);
            queu.push_back(obj);

            EV_INFO << "vector size is  " << queu.size()<<endl;
            EV_INFO << "Queue size is  " << obj.buff(*afdxMsg).getLength()<<endl;

        }
  int i =1;
         //while(i)
         {
             bool flag = false;
             std::vector<wdrr>::iterator it;

             for(it = queu.begin();it!= queu.end();it++)
         //            for(auto it:queu)
             {
                 if(0 != (it->buff(*afdxMsg).getLength()))
                 {
                     it->cal_wtqnt = it->dfcntr + it->cnstwtqnt;

                     EV_INFO << endl << "1--  dfcntr is  " << it->dfcntr <<endl;
                     EV_INFO << "cal_wtqnt is  " << it->cal_wtqnt << endl;
                     afdx::AFDXMessage *afdxMsg1 = check_and_cast<afdx::AFDXMessage *>(it->buff(*afdxMsg).front());

                     EV_INFO << "Vitual id " << afdxMsg1->getVirtualLinkId()<<endl;

 //                    while(!(it->buff.empty()))
                     if(false == (it->buff(*afdxMsg).empty()))
                     {
                         it->pktlength = afdxMsg1->getPacketLength();

                         EV_INFO << "pktlength is " << it->pktlength << endl;

                         if(it->cal_wtqnt >= it->pktlength)
                         {
                             it->dfcntr = it->cal_wtqnt - it->pktlength;
                             it->cal_wtqnt = it->dfcntr;

                             EV_INFO << "2-- it->cal_wtqnt is " << it->cal_wtqnt <<endl;
                             EV_INFO << "it->dfcntr is " << it->dfcntr<<endl;

                             send(msg,"out");

//                             afdx::AFDXMessage p = it->buff.front();
//                             it->buff(*afdxMsg).pop();
                             cMessage *msg1;
                             msg1 = new cMessage;
                             msg1 = (cMessage *)it->buff(*afdxMsg).pop();
                             delete msg1;


                             flag = true;
                         }
                         else
                         {
                             break;
                         }
                         EV_INFO<< "queue size is "<<it->buff(*afdxMsg).getLength()<< endl;
                     }
                 }
                 else
                 {
                     EV_INFO << endl <<"=================================Queue is empty" << endl;
                 }
             }
             if(true == flag)
             {
 //              send(msg,"out");
 //              it->buff.pop();
             }
         }
 //        for(auto i=0;i<n;i++)
 //        {
 //            wt[i] = tot[i]- brusttm[i];
 //            tot_avg_wait_time = tot_avg_wait_time + wt[i];
 //            tot_avg_Trun_arnd_time = tot_avg_Trun_arnd_time + tot[i];
 //        }
 //
 //        tot_avg_wait_time = (float)tot_avg_wait_time/n;
 //        tot_avg_Trun_arnd_time = (float)tot_avg_Trun_arnd_time/n;
 //
 //        std::cout<< "tot_avg_wait_time " << tot_avg_wait_time << "\n" ;
 //        std::cout<< "tot_avg_Trun_arnd_time" << tot_avg_Trun_arnd_time << "\n" ;
     }  
 }
}; // namespace afdx


#包括“RegulatorLogic.h”
#包括“AFDXMessage_m.h”
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
wdrr类:公共cSimpleModule
{
公众:
int basequantum;//basequantum
int priority;//队列的优先级
int-weight;//根据任务优先级分配的权重
int pktlength;//队列中接收的afdx数据的数据包长度
int cnstwtqnt;//恒定重量计数
int calwtqnt;//标定重量cnt
int-dfcntr;//修改计数器
cQueue buff(afdx::AFDXMessage);//afdx数据队列
};
wdrr类obj;
std::向量queu;
bool send_msg(无效);
名称空间afdx{
定义_模块(RegulatorLogic);
void RegulatorLogic::initialize()
{
//TODO-生成的方法体
}
void RegulatorLogic::handleMessage(cMessage*msg)
{
afdx::AFDXMessage*afdxMsg=检查和转换(msg);
EV_信息