我正在尝试模拟 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 模块而执行的所有测试都正常工作。