查看: 1794|回复: 3

初学OSG,关于最近编译到是报错的问题总结!

[复制链接]

该用户从未签到

发表于 2009-6-23 23:47:44 | 显示全部楼层 |阅读模式
小弟最近在学习OSG,刚刚安装上环境,编写程序时,老是报错。

P2.exe 中的 0x7c80bee7 处未处理的异常: Microsoft C++ exception: __non_rtti_object @ 0x0012f8a0 。

感谢版主的支持,经仔细研究发现:

原来是设置问题。

VS2003中在编写C++程序时,需要对RTTI的设置。


             默认是禁用,必须打开。

             在编译程序时,报出警告:“dynamic_cast”用在了带   /GR-   的多态类型“B”上;可能导致不可预知的行为  。 如果报此警告,表示运行程序有可能要出错。


              设置方法:打开项目,右键->属性->C/C++->语言->启用运行时类型-->将否改为是(CR)。


与大家分享一下。希望对初学者有所帮助。

[ 本帖最后由 ydwcowboy 于 2009-6-24 09:20 编辑 ]

该用户从未签到

发表于 2009-6-23 23:51:56 | 显示全部楼层
楼主何不直接转贴在论坛上?

该用户从未签到

 楼主| 发表于 2009-6-24 09:18:32 | 显示全部楼层

好的。

好的。

[ 本帖最后由 ydwcowboy 于 2009-6-24 09:20 编辑 ]

该用户从未签到

发表于 2009-6-24 10:19:11 | 显示全部楼层
OSG运行需要多线程DLL的运行时库和RTTI,所以,在建立每个OSG工程后,第一件事就是更改工程设置。


打开项目属性,在C/C++选项卡里,点击代码生成页,更改运行时库,对于Debug版,用多线程调试 DLL (/Mdd),对于Release版,用多线程 DLL (/MD)。


设置C/C++选项卡里的语言页的启用运行时类型信息为:是(/GR)。


OSG程序需要链接对应的库文件,打开链接器选项卡里的输入页,设置附加依赖项,对于Debug版,是OpenThreadsWin32d.lib Producerd.lib osgd.lib osgDBd.lib osgFXd.lib osgGAd.lib osgParticled.lib osgProducerd.lib osgSimd.lib osgTerraind.lib osgTextd.lib osgUtild.lib,对于Release版,设置这些lib文件不带“d”的版本。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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