Mac M1下OMNET++ M/M/1队列模型包声明不匹配错误求助
解决OMNET++中“Declared package does not match expected package”错误
针对你在Mac M1设备上OMNET++ M/M/1排队模型项目遇到的包声明不匹配问题,可按以下步骤排查解决:
- 核对文件目录与包声明的对应关系
OMNET的包声明必须和文件所在的目录层级严格对应。若你的.ned和.cc文件直接放在项目src根目录,而包声明写的是package MM1QueueModel;,就会触发错误——OMNET期望文件位于与包名同名的子目录下。正确的项目结构应为:
MM1QueueModel/ ├── src/ │ ├── MM1QueueModel/ │ │ ├── MM1Queue.ned │ │ └── MM1Queue.cc │ └── omnetpp.ini └── (其他项目配置文件)
调整文件到对应子目录后,再验证包声明。
检查项目包路径配置
在OMNET++ IDE中右键项目→Properties→OMNET++→Package,确认项目的基础包路径包含src目录,确保OMNET++能正确解析MM1QueueModel包的位置。同步.cc文件的命名空间
确保MM1Queue.cc中的命名空间与.ned文件的包声明一致,示例代码如下:
#include "MM1Queue.h" namespace MM1QueueModel { Define_Module(MM1Queue); // 模块逻辑实现代码 } // namespace MM1QueueModel
清理缓存并重建项目
Mac M1上的OMNET++可能存在编译缓存问题,执行以下操作:- 关闭OMNET++ IDE
- 删除项目目录下的
out/和build/文件夹 - 重新打开IDE,右键项目→
Clean Project,再执行Build Project
验证大小写一致性
尽管Mac文件系统默认大小写不敏感,但OMNET++对包名、目录名的大小写严格匹配。确认目录名、文件名与包声明的大小写完全一致(如避免目录为mm1queuemodel但包声明为MM1QueueModel的情况)。
内容的提问来源于stack exchange,提问作者Waqas Ahmad
相关产品推荐
相关产品推荐

