使用OMNeT++时INET与OSG链接错误问题求助
解决OMNeT++嵌套项目编译时OSG未定义引用错误
问题说明
你遇到的osg::AutoTransform::setNormal(osg::Vec3f const&)这类未定义引用错误,是因为nesting或INET项目默认启用了OSG(OpenSceneGraph,OMNeT++的3D可视化依赖),但你的环境中OSG依赖未正确配置,或者你不需要3D可视化功能。
解决步骤
方法一:直接禁用OSG编译选项
- 打开OMNeT++ IDE,右键选中nesting项目,选择Properties
- 左侧菜单进入OMNeT++ | Makemake,选中项目根目录对应的makemake文件(通常是
src目录项) - 点击Options,切换到Compiler标签页
- 在Preprocessor definitions中添加:
若INET项目也触发该问题,对INET项目执行同样操作WITH_OSG=0 - 保存设置后,先执行
Project > Clean,再重新编译项目
方法二:安装OSG依赖(如需3D可视化)
如果需要保留3D功能,在Ubuntu20.04终端执行以下命令安装依赖:
sudo apt-get install libopenscenegraph-dev libopenscenegraph161
安装完成后,进入OMNeT++安装目录运行./configure重新配置环境,再编译INET和nesting项目
方法三:手动修改Makefile
若IDE设置不生效,直接修改项目的Makefile,在CPPFLAGS中添加禁用OSG的宏定义:
CPPFLAGS += -DWITH_OSG=0
然后执行make clean && make重新编译
内容的提问来源于stack exchange,提问作者Zeh
相关产品推荐
相关产品推荐

