查看: 2356|回复: 17

osgviewerMFC新建失败

[复制链接]

该用户从未签到

发表于 2010-11-5 14:45:04 | 显示全部楼层 |阅读模式
新建了一个MFC,将example中的代码拷贝到相应的文件中,同时设定好工程属性。编译成功,但是调试的时候出现了问题,“读取位置时发生冲突。”
问题出现在
void cOSG::InitOSG(std::string modelname) ///修改
{
    // Store the name of the model to load
    m_ModelName = modelname;
    // Init different parts of OSG
    InitManipulators();
    InitSceneGraph();
    InitCameraConfig();
}这个函数中,InitManipulators();主要是这个函数。

难道是因为在下面这个函数中CString转换为std::string的问题吗?我这边参照了example的设定将工程属性设定为“使用多字节的字符集”,原先使用Unicode字符集会出现编译错误。
void CMFCView::OnInitialUpdate()
{
    CView::OnInitialUpdate();
    // Get Filename from DocumentOpen Dialog
    CString csFileName =(GetDocument()->GetFileName());

    // Init the osg class
mOSG->InitOSG(csFileName.GetString());
    // Start the thread to do OSG Rendering
    mThreadHandle = (HANDLE)_beginthread(&cOSG::Render, 0, mOSG);
}有人能告诉我原因吗?

该用户从未签到

 楼主| 发表于 2010-11-5 14:50:42 | 显示全部楼层
现在连MFC的窗口都不会出现。。。

该用户从未签到

发表于 2010-11-5 16:55:36 | 显示全部楼层
您现在提供的信息不足以帮助判断什么

该用户从未签到

 楼主| 发表于 2010-11-5 17:44:21 | 显示全部楼层
3# array
就是打开文件时出现访问冲突,所有的源代码均是example中osgviewerMFC的代码,没有任何的改动,但是打开时初始化osg函数InitOSG不能得到文件的名字和路径,即modelname错误。

该用户从未签到

发表于 2010-11-5 21:33:02 | 显示全部楼层
那就尝试一下使用文件绝对路径呗

该用户从未签到

发表于 2010-11-6 12:57:32 | 显示全部楼层
我觉得您可以不要初始化模型读取试试。。不要加载任何模型。。

该用户从未签到

发表于 2010-11-8 09:17:01 | 显示全部楼层
但是打开时初始化osg函数InitOSG不能得到文件的名字和路径,即modelname错误
这似乎不是一个osg问题了,也许您可以检查一下自己的工程配置;如果不能得到文件名和路径,那么您得到的是什么

该用户从未签到

发表于 2011-4-14 02:44:04 | 显示全部楼层
我也遇到了相同的问题,您最后怎么解决的啊?

该用户从未签到

发表于 2011-4-14 08:14:39 | 显示全部楼层
有两种情况:一是:系统环境配置里没有添加OSG_PATH路径(估计你已经添加了),二是CString转化为std::string的问题(这种情况我遇到过的),其实你只要调试一下就知道了,为什么在例子程序里没错没仔细研究。

该用户从未签到

发表于 2011-4-14 15:42:04 | 显示全部楼层
回复 9# garyliyong


    我完全按照MFC_OSG_MDI示例来写的,但是MFC窗口出现之后,点击“打开”,选择某一个模型文件后,程序总是跳到
                m_ModelName = modelname;
    这一句,而且还有错误信息:
First-chance exception at 0x0057bb30 in VirtualHand.exe: 0xC0000005: Access violation reading location 0x00000020.
Unhandled exception at 0x0057bb30 in VirtualHand.exe: 0xC0000005: Access violation reading location 0x00000020.
    但是我新建一个MFC_OSG_MDI程序,用示例中的所有文件替换掉新建的文件后,程序运行正常。百思不得其解。
    请高人帮忙看看。

该用户从未签到

发表于 2011-4-14 15:49:56 | 显示全部楼层
难道是中文路径的问题??

该用户从未签到

发表于 2011-4-14 20:00:39 | 显示全部楼层
你调试的看一下modename里的内容是否正确

该用户从未签到

发表于 2011-4-14 20:53:09 | 显示全部楼层
回复 12# garyliyong


    modelname里面的内容是对的,而且没有中文。

该用户从未签到

发表于 2011-4-15 19:20:50 | 显示全部楼层
那你看看是不是中文路径的问题?osg不支持中文路径

该用户从未签到

发表于 2011-4-18 08:35:02 | 显示全部楼层
OSG可以支持中文路径,只要设置setlocale就可以了

该用户从未签到

发表于 2011-12-12 19:46:37 | 显示全部楼层
已经设置setlocale(LC_ALL,"chs");
可是问题还是没有解决,请高手帮帮忙,谢谢!

该用户从未签到

发表于 2012-5-2 17:22:21 | 显示全部楼层
怎么解决的??
我也遇到了同样问题+

该用户从未签到

发表于 2012-5-2 17:28:15 | 显示全部楼层
本帖最后由 babeixian 于 2012-5-2 17:28 编辑


mModel = osgDB::readNodeFile(m_ModelName);
mModel总为null

调试截图

调试截图
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表