OpenSceneGraph找不到plugin的解决方案

报错信息

  1. read error (Could not find plugin to read object from file “xxx”)
  2. InputStream::readImage(): Unable to find a plugin for xxx

解决方案

将osg的库路径加入环境变量Path。

错误的解决方案

将osg库拷贝到可执行程序同级目录。这个做法不能成功,原因未知。

附:OSG查找插件的方式

转自博客
因为osg的插件非常的庞大大概有121种,如果osg启动的时候就要预加载这么多的插件就会导致osg的启动速度非常的缓慢,所以osg采用了职责链的设计模式以加载尽量少的插件。我们就来介绍一个osg是如果查找适合目前功能的插件的。也就是Registry::LoadStatus Registry::loadLibrary(const std::string& fileName)

1、 osg会先搜索已经注册的插件列表_dlList,判断插件是否已经被加载到环境中,如果osg找到了符合次格式的插件,getLibraryItr(fileName)

2、 如果osg没有在_ dlList中找到所需插件,那么osg就会根据文件的名称来去plugins文件夹下寻找(osgDB_+此文件的后缀 )同名的插件,load到环境中。DynamicLibrary* DynamicLibrary::loadLibrary(const std::string& libraryName)

3、 如果还是没有找到相应的插件,就代表此文件I/O的操作再次失败,OSG将返回失败信息。

猜你喜欢

转载自blog.csdn.net/qq_42679415/article/details/129191486
今日推荐