我尝试使用以下命令从命令行运行模拟,
$ opp_runall -j2 ./inetmanet-3.x-mactest2 -u Cmdenv -c General -r 1 -n ../..:../../../src:../../../tutorials --image-path=../../../images -l ../../../src/INET omnetpp.ini
我得到一个奇怪的错误,这对我来说没有意义,任何人都可以提供如下帮助。
what(): ASSERT: Condition '(int)signalListenerCount.size() == lastSignalID+1' does not hold in function registerSignal, ccomponent.cc line 414 opp_runall: ./inetmanet-3.x-mactest2 [...] -q runnumbers returned nonzero exit status
我使用omnetpp RC2最新版本,1992-2017。
任何帮助?
答案 0 :(得分:3)
如果在静态初始化期间在外部库中注册了信号,则会发生这种情况。三种可能的解决方案:
引用阿提拉:
在EXECUTE_ON_STARTUP(cComponent::clearSignalState());
的定义之后立即将ccomponent.cc
插入cComponent::signalListenerCount
,然后重建OMNeT ++。
将信号注册移出静态初始化阶段。在您的方案中可能会或可能不会这样,但避免修改OMNeT ++本身。
降级OMNeT ++并等到上游修复。至少有5.0个作品。