查看: 1918|回复: 5

osg2.9.5+vpb0.9.11运行osgdem报错

[复制链接]

该用户从未签到

发表于 2009-9-14 23:08:02 | 显示全部楼层 |阅读模式
直接在解决方案中调试运行osgdemd.exe,报错

问题签名:
  问题事件名称: APPCRASH
  应用程序名: osgdemd.exe
  应用程序版本: 0.0.0.0
  应用程序时间戳: 4aadce9d
  故障模块名称: kernel32.dll
  故障模块版本: 6.0.6002.18005
  故障模块时间戳: 49e037dd
  异常代码: e06d7363
  异常偏移量: 0003fbae
  OS 版本: 6.0.6002.2.2.0.16.7
  区域设置 ID: 2052
  其他信息 1: e51a
  其他信息 2: 4c0d4d78887f76d971d5d00f1f20a433
  其他信息 3: e51a
  其他信息 4: 4c0d4d78887f76d971d5d00f1f20a43
//////////////////////////////////////////////////////////////////////////////////////////

Windows 已在 osgdemd.exe 中触发一个断点。
其原因可能是堆被损坏,这也说明 osgdemd.exe 中或它所加载的任何 DLL 中有 bug。
输出窗口可能提供了更多诊断信息
/////////////////////////////////////////////////
定位到osg中的如下函数
        void setCommandLineOptionsDefaults(const UsageMap& usageMap) { _commandLineOptionsDefaults=usageMap; }
经调试发现usageMap内容为三个error[0]组成的数组


在cmd窗口中带参数输入,如下:
D:\osg\vpb0.9.11source\sln\bin\debug>osgdemd --bluemarble-west -t D:\osg\vpbdata
\land_shallow_topo_west.tif --bluemarble-east -t D:\osg\vpbdata\land_shallow_top
o_east.tif --geocentric -l 12 -o D:\osg\vpbdata\earthtest\earth.ive

仍然报错,第一段内容一样,然后报应用程序错误。

该用户从未签到

发表于 2009-9-14 23:23:48 | 显示全部楼层
只能说我这里同样是osg2.9.5+vpb0.9.11,没有问题。不知道您的vpb编译有没有问题(例如把Debug和Release的依赖库混用);此外您提供的“问题签名”那一大段内容不会对解决问题有什么帮助~~

该用户从未签到

 楼主| 发表于 2009-9-15 10:49:28 | 显示全部楼层
谢谢您的回答了.感觉差不多就是这个问题。
我又重新用cmake生成了一遍osg和gdal然后编译,又报错,到了这个位置

#else  /* _SYSCRT */

#include <cstdlib>
#include <new>

_C_LIB_DECL
int __cdecl _callnewh(size_t size) _THROW1(_STD bad_alloc);
_END_C_LIB_DECL

void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc)
        {       // try to allocate size bytes
        void *p;
        while ((p = malloc(size)) == 0)
                if (_callnewh(size) == 0)
                {       // report no memory
                static const std::bad_alloc nomem;
此处报错--〉        _RAISE(nomem);
                }

        return (p);
        }

/*
* Copyright (c) 1992-2002 by P.J. Plauger.  ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
V3.13:0009 */
#endif  /* _SYSCRT */

该用户从未签到

发表于 2009-9-15 12:23:29 | 显示全部楼层
您提供的错误堆栈依然对于排错没有意义……还是那句话,请仔细检查Debug和Release的依赖库是否混用,包括GDAL等库!比如,您是否用Release版本的gdal_i.lib来作为Debug版本的VPB的依赖库了?

该用户从未签到

 楼主| 发表于 2009-9-15 14:54:33 | 显示全部楼层
我运行的makegdal80.sln,然后选择Debug模式,编译。
连接的是gdal.lib,没有用gdal_i.lib
makegdal80.sln比较奇特,项目属性中只有NMake中有一些可以修改的信息,例如,生成命令行的值为:cd $(ProjectDir) && nmake -f makefile.vc MSVC_VER=1400 DEBUG=1 && nmake -f makefile.vc MSVC_VER=1400 DEBUG=1 install
不像其他项目可以更改MD/MDd,MT/MTd 这类信息。

其他的osg,vpb,都用的DEBUG模式。

我感觉您指的确实是问题所在,但是检查之下,没发现混用,是不是我的检查方式不全面。

该用户从未签到

发表于 2009-9-15 16:15:30 | 显示全部楼层
那么,试一下Release版本好了。不过VPB 0.9.11在我这里都没有什么问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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