osg程序中osgDB::writeNodeFile和osgDB::readNodeFile总是失败

前言

osg程序中osgDB::writeNodeFile和osgDB::readNodeFile总是失败,比如下面的代码:

int main(int argc, char** argv)
{
    
    
    osg::ref_ptr<osg::Node> root = createSceneGraph();
    if (!root.valid())
    {
    
    
        osg::notify(osg::FATAL) << "Faile to createSceneGraph()." << std::endl;
        return (-1);
    }

    std::string out("state.osg");
    if (!(osgDB::writeNodeFile(*(root.get()), out)))
    {
    
    
        osg::notify(osg::FATAL) << "Failed in osgDB::writeNodeFile()." << std::endl;
        return (-1);
    }

    osg::notify(osg::ALWAYS) << "Successfully wrote \"" << out << "\". Execute \" osgviewer" << out << "\" to view." << std::endl;

    osgViewer::Viewer viewer;
    viewer.setSceneData(osgDB::readNodeFile("state.osg"));
    return viewer.run();


	return 0;
}

if (!(osgDB::writeNodeFile(*(root.get()), out)))
这行代码总是失败!!!,但是就在前几天还是正常的,但现在突然不行了???代码没有改动,osg库也没有变过,奇怪的问题。

分析问题

  1. 首先第一反应程序中的osg库被vcpkg替换了,于是在vs2019中把vcpkg自动替换库关闭,把vcpkg全部选项知置“否”,如果程序报错说vcpkg Manifest相关,就把Use Vcpkg Manifest 置“是”
    在这里插入图片描述
    但问题依旧
    2.osg的第三方依赖库zlib或者等被修改
    osgViewerd.lib
    osgTextd.lib
    opengl32.lib
    osgGAd.lib
    osgDBd.lib
    zlibd.lib
    osgUtild.lib
    osgd.lib
    OpenThreadsd.lib
    确定这些库都没有修改,没有问题,问题依然没有解决

3.osg相关的环境变量变化
(1)添加osg库中lib和dll环境变量
(2)添加osg库依赖第三方lib和dll
问题解决
在这里插入图片描述
4.程序运行结果
在这里插入图片描述
5.源码下载
源码下载地址

猜你喜欢

转载自blog.csdn.net/aoxuestudy/article/details/121529921