You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu运行osgEarth出现ObjectWrapperManager::addWrapper重复报错如何解决

报错信息
ObjectWrapperManager::addWrapper(): 'osg::DummyObject' already exists.
ObjectWrapperManager::addWrapper(): 'osgEarth::ClampableNode' already exists.
ObjectWrapperManager::addWrapper(): 'osgEarth::InstallCameraUniform' already exists.
ObjectWrapperManager::addWrapper(): 'osgEarth::DrapeableNode' already exists.
ObjectWrapperManager::addWrapper(): 'osgEarth::Util::DrawInstanced::InstanceGeome
报错根因

这类ObjectWrapperManager::addWrapper()提示类已存在的报错,本质是OSG的序列化对象包装器被重复注册导致,常见触发场景如下:

  • 系统中共存多个版本的OSG/osgEarth库,程序运行时动态链接加载了不同版本的库文件,同一类的包装器被多次执行注册逻辑
  • 程序编译配置错误,同时链接了静态版和动态版的osg/osgEarth库,两套库都自带对象注册逻辑,触发重复注册
  • 自定义开发的OSG/osgEarth插件中重复实现了官方已有的类包装器注册代码,和官方库逻辑冲突
  • 你贴出的报错末尾存在截断,完整报错会明确显示触发重复注册的全类名,不影响问题根因判断
修复方案
  • 首先排查动态链接依赖:执行ldd 你的可执行文件路径命令,检查所有关联的osg、osgEarth库文件路径和版本,确认所有库版本一致,没有同时引用不同版本的库
    • 若存在多版本共存,卸载多余的OSG/osgEarth版本,仅保留编译程序时使用的对应版本即可
  • 检查编译配置:
    • 确认CMakeLists中没有同时链接静态和动态版本的osg/osgEarth库,统一使用动态库或者静态库,禁止混用
    • 若自行开发了OSG/osgEarth插件,删除自定义的重复对象包装器注册代码,直接使用官方提供的注册逻辑即可
  • 临时规避:如果报错不影响程序正常运行,该类提示属于警告级别的输出,不会导致程序崩溃,可以暂时忽略

内容的提问来源于stack exchange,提问作者peanutpig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:36:03