• could not find plugin to read objects from file xxx.ive


    症状:
    VS2010,使用OSG2.9.6库的程序,Debug配置运行时,会提示找不到读ive文件的插件;
    Release下正常。

    说明:
    1.依赖项中的lib库已经检查过是d和非d区分的。
    2.编译通过,include和lib目录正确。
    3.windows 2003 x64 r2 with sp2
    4.VS2010,使用win32配置。
    5.osgversion 2.9.6

    代码如下:
    1 osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
    2 viewer->setSceneData(osgDB::readNodeFile("test.ive"));
    3 viewer->run();


    2010/10/21 update1

    使用$err,hr 获取到 osgDB / DynamicLibrary.cpp中 handle = LoadLibrary( libraryName.c_str() )的错误信息:

    0x000036b1 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题
    libraryName的值确认是存在的osgdb_ived.dll。

    2010/10/21 update2

    用depends分析了osgdb_ived.dll和osgdb_ive.dll,发现前者依赖的zlib1d.dll木有找到MSVCR80D.DLL和MSJAVA.DLL,后者木有 找到MSJAVA.DLL。



    解决方法:
    使用和OSG的编译环境一样的环境(VS2010)编译生成新的zlib替换原来的zlib文件。(原先的zlib是vs2005sp装到顶的编译环境编译的,也就是c++版本是8.0.50727.4053)。


    附:
    听说是因为VS不能使用混合版本debug才会这样。
    甚为疑惑,如果这是真的话,就意味着如果程序LoadLibrary加载了使用其他版本的VC编译的dll库,就只能一直使用Release,不能调程序了?不能这么残忍吧!
    改天从装了vs2005的机器上拷贝727.4053版的msvcr80d.dll来验证一下。
  • 相关阅读:
    虚拟化、云计算与超融合的简单总结
    期货量化总结与思考
    易盛内外通用版交易API转websocket
    门诊叫号系统系列-1.语音叫号 .net c#
    六线顺上黑马选股和切割线选股法该如何操作?
    我的总结--强势股的短线战法精髓
    MACD头肩顶/底 = 驱动五浪
    有效突破的三三原则
    5日均线--攻击线
    10日均线--操盘线
  • 原文地址:https://www.cnblogs.com/mumuliang/p/1883380.html
Copyright © 2020-2023  润新知