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.源码下载
源码下载地址

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值