Omnet++ 扩展inet c+;时虚拟函数表出错+;班

Omnet++ 扩展inet c+;时虚拟函数表出错+;班,omnet++,inet,Omnet++,Inet,我想在我自己的项目中扩展一些inet模块。如果我使用下面的代码,我会得到一个分段错误。例如,调试器显示Radio.cc想要调用medium->addRadio(this);事实上,它调用SCTPOpenCommand::setLocalAddresses(constAddressVector&localAddresses),这在项目中绝对没有使用 MyRadiomedia.ned package test.physicallayer.common; import inet.physicalla

我想在我自己的项目中扩展一些inet模块。如果我使用下面的代码,我会得到一个分段错误。例如,调试器显示Radio.cc想要调用medium->addRadio(this);事实上,它调用SCTPOpenCommand::setLocalAddresses(constAddressVector&localAddresses),这在项目中绝对没有使用

MyRadiomedia.ned

package test.physicallayer.common;

import inet.physicallayer.apskradio.packetlevel.APSKScalarRadioMedium;

module MyRadioMedium extends APSKScalarRadioMedium
{
    parameters:
        @class(MyRadioMedium);
}
MyRadioMedium.h

\ifndef INET\u myradiomedia\u H_
#定义INET\u MYRADIOMEDIUM\u H_
#包括“inet/physicalayer/contract/packetlevel/iradiomedia.h”
#包括“inet/physicalayer/common/packetlevel/radiomedia.h”
名称空间内网{
命名空间物理层{
INET_API MyRadioMedia类:公共无线电媒体{
公众:
MyRadioMedia():RadioMedia(){}
受保护的:
虚拟布尔值是通信范围(常数传输*传输、常数坐标起始位置、常数坐标结束位置)常数覆盖;
};
}//命名空间物理层
}//名称空间inet
#恩迪夫
myradiomedia.cc

#包括
名称空间内网{
命名空间物理层{
定义_模块(MyRadioMedia);
bool MyRadioMedia::isInCommunicationRange(常数传输*传输、常数协调起始位置、常数协调结束位置)常数{
//一些代码
返回true;
}
}//命名空间物理层
}//名称空间inet
在windows和ubuntu上显示gdb的屏幕截图


可能是代码的其他部分重写了vtable吗?使用内存访问检查器(例如valgrind的memcheck)运行模拟可能会在这两种情况下对此有所帮助。错误仅存在于omnet++和windows中。我将valgrind与omnet++和ubuntu一起使用,模拟运行没有问题。这很奇怪。gdb堆栈回溯看起来正常吗?我发布了两个屏幕截图,显示了windows和ubuntu上的gdb。它在windows上看起来不正常。可能是代码的其他部分过度编写了vtable吗?使用内存访问检查器(例如valgrind的memcheck)运行模拟可能会在这两种情况下对此有所帮助。错误仅存在于omnet++和windows中。我将valgrind与omnet++和ubuntu一起使用,模拟运行没有问题。这很奇怪。gdb堆栈回溯看起来正常吗?我发布了两个屏幕截图,显示了windows和ubuntu上的gdb。它在窗户上看起来不正常。