在 OMNET++ 项目中对 INET 模块进行子类化时出错

时间:2021-03-07 11:45:25

标签: omnet++ inet

我正在尝试模拟 INET 没有默认实现的各种无线 MAC 协议的行为。虽然我可以将预先存在的 INET 模块导入网络并正常使用它们,但我无法将它们包含在 C++ 文件中以便我可以创建自己的模块。

例如,以下代码来自 INET 展示。我可以在我的新项目中毫无问题地执行模拟。

function fire() {
  var page = document.getElementById('select').value;
    if (page == "") {
        window.location = "https://example.com/page"      
     } else {
         window.location= "https://example.com/page/" +page;     
        }
}

但是,我无法在同一个项目中编译以下代码:

import inet.common.scenario.ScenarioManager;
import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.networklayer.ipv4.RoutingTableRecorder;
import inet.node.aodv.AodvRouter;
import inet.physicallayer.unitdisk.UnitDiskRadioMedium;


network AODVNetwork
{
    parameters:
        int numHosts;
        @display("bgb=650,650");
    submodules:
        radioMedium: UnitDiskRadioMedium {
            parameters:
                @display("p=100,200;is=s");
        }
        configurator: Ipv4NetworkConfigurator {
            parameters:
                config = xml("<config><interface hosts='*' address='145.236.x.x' netmask='255.255.0.0'/></config>");
                @display("p=100,100;is=s");
        }
        routingTableRecorder: RoutingTableRecorder {
            parameters:
                @display("p=100,300;is=s");
        }
        scenarioManager: ScenarioManager {
            parameters:
                script = default(xml("<scenario/>"));
                @display("p=100,400;is=s");
        }
        host[numHosts]: AodvRouter {
            parameters:
                @display("i=device/pocketpc_s;r=,,#707070");
        }
    connections allowunconnected:
}

当我点击构建时,我在第一次导入 //RImac.h #include "inet/common/INETDefs.h" #include "inet/linklayer/base/MacProtocolBase.h" #include "inet/linklayer/common/MacAddress.h" #include "inet/linklayer/contract/IMacProtocol.h" #include "inet/physicallayer/contract/packetlevel/IRadio.h" class INET_API RIMac : public MacProtocolBase, public IMacProtocol { private: RIMac(const RIMac&); BMac& operator=(const BMac&); public: RIMac() {} virtual ~RIMac(); virtual void finish() override; virtual void handleLowerPacket(Packet *packet) override; virtual void handleUpperPacket(Packet *packet) override; virtual void handleSelfMessage(cMessage *) override; virtual void receiveSignal(cComponent *source, simsignal_t signalID, intval_t value, cObject *details) override; }; 时收到此错误。注释掉导入只会将错误移到下一个。

我尝试按照一些教程进行操作,但错误仍然存​​在。如 this 视频中所述,我创建了一个对 INET 的项目引用并修改了 makefile 配置以包含引用项目的路径和目录。我还检查了 INET 是否被标记为共享库。

这个问题只在我导入 C++ 文件时出现。我在网络中简单地使用各种 INET 模块而执行的所有测试都正常工作。

0 个答案:

没有答案