无法在 .msg 文件中扩展 FieldsChunk class(来自 INET)

Can't extend FieldsChunk class (from INET) inside .msg file

我需要制作一个 MANET 路由协议,所以我正在查看 INET 中的 GPSR 和 DSDV 源代码以深入了解如何做。

我检查了文件 DsdvHello.msgGpsr.msg,其中定义了代表这些协议数据包的 classes。那些 classes 扩展 FieldsChunk class。我假设我必须以相同的方式定义我的协议的数据包,所以我在我的项目中制作了文件 Protocolo.msg,如下所示。

cplusplus {{
#include "inet/common/packet/chunk/FieldsChunk.h"
#include "inet/networklayer/contract/ipv6/Ipv6Address.h"
}}

class FieldsChunk;
class Ipv6Address;

class Hola extends FieldsChunk {

    Ipv6Address ip;
    string ubicacion;
}

class Adios extends FieldsChunk {

    Ipv6Address ip;
}

我不确定我做的是否正确,但我正在做我在 DsdvHello.msgGpsr.msg 以及 OMNeT++ 模拟手册中的消息定义章节中看到的那样。

我在“项目”>“属性”>“项目引用”中选择了 INET,但是当我构建我的项目时,当它试图编译我的 .msg 文件时,我收到消息 fatal error: inet/common/packet/chunk/FieldsChunk.h: No such file or directory

我还有一个使用 IManetRouting(也来自 INET)的 NED 文件没有问题,但由于某种原因它在 .msg 文件中找不到 FieldsChunk.hIPv6Address.h .

任何人都可以告诉我是否需要做任何其他事情以便我可以在我的 .msg 文件中使用那些 classes 吗?

  1. Protocolo.msg改成:

    import inet.common.INETDefs;
    import inet.common.packet.chunk.Chunk;
    import inet.networklayer.contract.ipv6.Ipv6Address;
    
    namespace inet;
    
    class Hola extends FieldsChunk {
      Ipv6Address ip;
      string ubicacion;
    }
    
    class Adios extends FieldsChunk {
      Ipv6Address ip;
    }
    
  2. 然后去你项目的Properties,select OMNeT++ | Makemake |源文件夹 | Options... 和:

    • Compile选项卡中检查"Add include paths exported from referenced projects"
    • Custom 选项卡中添加以下行:

      MSGC:=$(MSGC) --msg6