环境:Vs2010

  OpenSceneGraph-3.0.1-VS10.0.30319-x86-debug-12741

  OpenSceneGraph-3.0.1-VS10.0.30319-x86-release-12741

设置环境变量
PATH:                   D:\osg\bin
OSG_FILE_PATH:   D:\osg\data
这时候你可以用osgViewer查看一下osg文件,比如经典的奶牛cow.osg
在命令行下输入:osgViewerd.exe cow.osg
 
新建一个vc空项目,设置vc++包含目录和库目录。vc2010是右击|属性|项目和解决方案|VC++目录,低版本是工具|选项|项目和解决方案|VC++目录
包含文件:   D:\osg\include
库文件:      D:\osg\lib
右击|属性|配置属性|链接器|输入|附加依赖项
OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgViewerd.lib
如果编译Release版本,去掉d
新建main.cpp输入下面的代码,这次显示一个滑翔机。
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
void main()
{
osgViewer::Viewer viewer;
viewer.setSceneData(osgDB::readNodeFile("glider.osg"));
viewer.realize();
viewer.run();
}

http://greatverve.cnblogs.com/archive/2012/09/19/osg-hello-world.html

编译出现的问题:d和非d的lib

过程中出现的问题:Microsoft C++ 异常 std::bad_alloc

0x7c812afb 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012f448 处的 std::bad_alloc。

原因:编译Debug版本的时候使用了不带d的Dll。

处理方法:

Demo编译成Debug版本使用带d的dll,编译成Release版本使用不带d的dll。

注意:

1. 编译Debug和Release版本需要分别设置项目属性中的包含目录文件和库目录

2. 分别设置“链接器——输入——附加依赖项”,或者输入如下代码:

 #ifdef _DEBUG
#pragma comment (lib,"OpenThreadsd.lib")
#pragma comment (lib,"osgd.lib")
#pragma comment (lib,"osgDBd.lib")
#pragma comment (lib,"osgFXd.lib")
#pragma comment (lib,"osgGAd.lib")
#pragma comment (lib,"osgManipulatord.lib")
#pragma comment (lib,"osgParticled.lib")
#pragma comment (lib,"osgShadowd.lib")
#pragma comment (lib,"osgSimd.lib")
#pragma comment (lib,"osgTerraind.lib")
#pragma comment (lib,"osgTextd.lib")
#pragma comment (lib,"osgUtild.lib")
#pragma comment (lib,"osgViewerd.lib")
#else
#pragma comment (lib,"OpenThreads.lib")
#pragma comment (lib,"osg.lib")
#pragma comment (lib,"osgDB.lib")
#pragma comment (lib,"osgFX.lib")
#pragma comment (lib,"osgGA.lib")
#pragma comment (lib,"osgManipulator.lib")
#pragma comment (lib,"osgParticle.lib")
#pragma comment (lib,"osgShadow.lib")
#pragma comment (lib,"osgSim.lib")
#pragma comment (lib,"osgTerrain.lib")
#pragma comment (lib,"osgText.lib")
#pragma comment (lib,"osgUtil.lib")
#pragma comment (lib,"osgViewer.lib")
# endif

OSG第一个Demo的更多相关文章

  1. angular开发者吐槽react+redux的复杂:“一个demo证明你的开发效率低下”

    曾经看到一篇文章,写的是jquery开发者吐槽angular的复杂.作为一个angular开发者,我来吐槽一下react+redux的复杂. 例子 为了让大家看得舒服,我用最简单的一个demo来展示r ...

  2. 初识nginx之第一个demo

    商城项目做了一个多月了,想到必须用到负载均衡,简单了解了一下nginx,首先分享第一个demo,五月份上线后,会继续分享一系列相关知识. 在nginx根目录下,用了一个园友的批处理文件nginx.ba ...

  3. springMvc的第一个demo

    1.下载jar包 http://repo.spring.io/libs-release-local/org/springframework/spring/4.2.3.RELEASE/ 2.下载源码 j ...

  4. Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)

    在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等. ...

  5. 如何在WTL和MFC中使用duilib及如何静态使用duilib库!(初级讲解 附带一个Demo)

    关于duilib的历史,我也就不多说了,能看到这篇文章的人都是有一定了解才能找到这个的. 我直接说下对这个库的基本使用吧. 我个人对一些好技术都是比较感兴趣的. 因为个人原因 喜欢接触一个好技术. 所 ...

  6. 白盒测试之gtest第一个demo

    认识gtest工具后,关于它的使用,下面将用一个demo程序演示一下gtest的用法以及成果展示. 一.需要测试的C++代码: #include "myfunction.h" // ...

  7. 在VS中实现webService的一个demo(图解)

    在VS中实现webService的一个demo(图解) 先创建一个web项目,创建好web项目后,添加新建项——web服务 在新建好的web服务文件中写如下代码: 生成当前解决方案. 新建一个winf ...

  8. Cocos2d-x 学习(1)—— 通过Cocos Studio创建第一个Demo

    近期在工作上有了比較大的转变,自学情绪也慢慢高涨,本来一直在研究unity的技术.由于换了工作会開始接触cocos2d-x.但并不意味着停止研究unity,以后有时间还是会继续的. 公司的cocos2 ...

  9. 使用android的mediaplayer做成 一个demo,欢迎测试使用

    附件是为一个定制视频产品而简单的写了一个demo,用来说明android的mediaplayer是如何使用的. http://files.cnblogs.com/guobaPlayer/palyerD ...

随机推荐

  1. ORA-01791: 不是 SELECTed 表达式

    Oracle 9i数据库,执行下面语句出现错误“ORA-01791: 不是 SELECTed 表达式”:select distinct t.name from auth_employee t orde ...

  2. setInterval 启用和停止,见代码

    <title></title>    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="t ...

  3. HAProxy安装及初步使用

    1.yum安装wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmrpm -ivh epel-r ...

  4. Checklist For Choosing The Right Database Engine

    http://sqlite.org/whentouse.html Appropriate Uses For SQLite SQLite is not directly comparable to cl ...

  5. heapsort

    Introduction to Algorithms Third Edition The (binary) heap data structure is an array object that we ...

  6. ArrayList调用remove方法需要注意的地方

    ArrayList中有remove 方法和 removeAll方法, ArrayList中不仅继承了接口Collection中的remove方法,而且还扩展了remove方法. Collection中 ...

  7. Android TextView 显示不全的自动补齐方式

    TextView在Android开发中用到的地方应该是很多的.很多时候,TextView会有一行显示不全被截取或者会换行.之前我的解决办法比较笨拙,定死TextView的一行字数长度,最后一个以省略号 ...

  8. 【转】Unity 解析Json字符串

    http://blog.csdn.net/qq_15267341/article/details/52013190 LitJSON使用很简单,两个步骤: 1 将LitJSON.dll文件拖动到unit ...

  9. XML xsd

    targetNamespace:表示本XSD中定义的元素和类型的名字空间都是http://exammpleOrder. xmlns:xsd:表示以前缀xsd开头的元素或则类型来自于http://www ...

  10. 关于Memo或者Edit之类控件, 直接设置Text无法撤销的解决方案

    昨天看到群里有人问使用Memo1.Text := '11111';来设置内容的代码无法使用Memo1.Undo的方式来撤销 测试了一下果然如此, 跟踪了VCL代码, 发现Text := '11111' ...