搜索
查看: 29501|回复: 140

OSG+VS2010+win7环境搭建

[复制链接]
发表于 2012-9-4 01:44:52 | 显示全部楼层 |阅读模式
OSG+VS2010+win7环境搭建
一.相关准备
a) Osg源码
当前最新版:OpenSceneGraph的3.0.0.zip
下载链接:
http://www.openscenegraph.org/do ... ceneGraph-3.0.0.zip
b) Osg第三方库
3rdParty_VC10_x86_x64.zip
http://members.iinet.net.au/~bchrist/3rdParty_VC10_x86_x64.zip
c) 数据包
当前最新版:OpenSceneGraph-Data-3.0.0.zip下载链接:
http://www.openscenegraph.org/do ... raph-Data-3.0.0.zip
d) 安装源码工具
cmake-2.8.4-win32-x86.exe
至于这个文件的下载需要ke xue shang wang, 如果不方便下载的话我传一个吧http://pan.baidu.com/s/1dDd2xUD
二、编译准备
为了编译的顺利进行,将下载的文件组织如下:
在E盘建立一个OSG的文件夹,然后其他文件如下放置:
E:\OSG\OpenSceneGraph:源码解压后放于此
E:\OSG\3rdParty:第三方依赖库解压后放于此
注意这个里面的第三方库一般包含x64和x86的两个版本的,这里要根据你自己的电脑需要选择一个然后把里面的文件复制到3rdParty文件夹中。由于本人的电脑是64位的系统,但是我没有选择X64而是选择的留下了“x86”。之所以选择x86,也就是32位是因为64位的隐患很大,很多库没有64位的,而我也自己亲身实践过,在后面的VS批生成的时候导致ALL_INSTALL出现了2个失败,在后面的直接4个全失败。所以这里我建议选择使用32位的。
E:\OSG\data:数据包解压后放于此。
三.安装源码
a) 安装CMake之后,打开CMake -gui.exe
这里要补充说下,因为有些教程里面说到,在创建” E:\OSG\OpenSceneGraph”文件夹之后,最好在里面新建两个文件夹,一个叫”build”;一个叫”bin”.就这点我咨询过OSG大神FreeSouth,他告诉我这里最好创建一下,不然会导致文件比较杂乱,出现问题不容易察觉。
b) 将源码OpenSceneGraph文件夹里头的CmakeLists.txt,拖到Cmake界面。
如图:
1.png
  然后将“where to build the binaries”后面的设置为刚刚新建的“build”文件夹,具体如上图。
c) 点击Configure,选择Visual Studio 10,如下图:
2.png
这里需要说的是因为我上面第三方依赖库我保留的是x86,所以我这里也就自然选择VS10就可以了,另外还有一个是VS10 Win64 的那就是要对应之前的第三方依赖库的选择了),finish后进行相关设置:
ACTUAL_3RDPARTY_DIR值E:/OSG/3rdParty;
BUILD_OSG_EXAMPLES :勾上
CMAKE_INSTALL_PREFIX:E:/OSG/OpenSceneGraph/;
如下图:
3.png
e)点击Configure后,将Advanced打勾,将BUILD_MFC_ EXAMPLE设置为on,然后进行最后一次的Configure配置。
如果这过程中下面的这个区域:
4.png
出现了红色的乱码,我提醒下可能是跟你的VS10的一些默认项目文件存放的路径有关,之所以会乱码是因为可能上面说到的路径有中文。所以建议不要去修改VS10的一下默认的存放的路径,避免不必要的错误。当然随着这步勾选上BUILD_MFC_ EXAMPLE,正常的情况应该是中间区域的红色会全部消失,但是下面的区域你去查看会发现任然有些红色的语句警告,这无关紧要。可继续进行下一步。
f)点击Generate,自此建构完成。
四.编译阶段
a) 用VS2010打开OpenSceneGraph.sln(此文件在E:\OSG\OpenSceneGrap\build下),
生成-批生成(至于有人问生成在哪,说下吧,就在上面的一排菜单栏的第五个),对All_BUILD进行生成,选择(Debug和Release两个版本),这段编译时间是很长的,估计4-5个小时,这的确要很久,建议大家要耐心等待,代码好像要走到13000左右差不多就好了,这段时间可以打局LOL或者看看视频之类的,玩笑了。
5.png
b) 第1步完成后,再对INSTALL也进行相应生成编译。这段时间相应会短不少。
6.png
五.数据转移
在C盘新建OSG文件夹(这个可以放在你想放的地方,不仅仅限于C盘,因为毕竟不是所有人都是把C盘设置的很大,而且不免有些人的C盘是容量不大的SSD。)
将E:\OSG\OpenSceneGraph下的bin,include,lib文件夹拷贝到C:\OSG下,将E:\OSG\data下的数据拷贝到C:\OSG\data下;这几个文件是OSG需要的。
###我这里忘了说,其实我这里少了一步,在数据转移的时候。因为我们之前在选择编译的目标文件夹的时候我们新建了一个叫build的文件夹,所以咱们在把上步“将E:\OSG\OpenSceneGraph下的bin,include,lib文件夹拷贝到C:\OSG下,将E:\OSG\data下的数据拷贝到C:\OSG\data下”之后,也要把“E:\OSG\OpenSceneGraph\build”文件夹里面的bin,lib,include三个文件夹依次复制到“C:\OSG”里面。提醒下每次粘贴的时候会弹出一个对话框,大致的意思就是存在了相同的名称的文件夹(这个是当然,因为你之前已经复制了一次嘛)这里需要选择合并文件夹。###
六.环境变量设置
这里我担心有人找不到了,所以还是写的详细点吧。
右击“计算机”,然后“属性”,在计算机属性窗口的左边有个高级系统设置,如下图:
7.png
点击之后就可以看到“环境变量”了
对系统变量设置如下:
OSG_FILE_PATH: C:\OSG\data
PATH:C:\OSG\bin;
可在命令行(CMD)进行测试osgversion,osglogo,osgviewer cow.osg。
七.新建OSG项目测试
a) 在VS2010下新建WIN32控制台程序
b) 添加一个cpp
c) 输入以下代码:

#include<osgViewer/Viewer>
#include<osgDB/ReadFile>
int main( int argc, char **argv )
{
osgViewer::Viewer viewer;
viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );
return viewer.run();
}
d)右键项目,选择“属性”,选择“VC++目录”,在包含目录添加:C:\OSG\include
在库目录添加:C:\OSG\lib.
8.png
e) 打开项目属性的链接器,输入里,附加依赖项加上:
OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgUtild.lib
osgGAd.lib
osgViewerd.lib
osgTextd.lib
f)运行,效果如下图:
9.png
下面的是Word的附件:
OSG平台搭建教程.docx (649.86 KB, 下载次数: 1935)
发表于 2014-1-18 00:28:43 | 显示全部楼层
1>InitializeBuildStatus:
1>  Touching "Debug\RRRR.unsuccessfulbuild".
1>ClCompile:
1>  All outputs are up-to-date.
1>  RRRR.cpp
1>c:\users\administrator\desktop\test\rrrr\rrrr\rrrr.cpp(2): warning C4627: “#include <osgViewer/Viewer>”: 在查找预编译头使用时跳过
1>          将指令添加到“StdAfx.h”或重新生成预编译头
1>c:\users\administrator\desktop\test\rrrr\rrrr\rrrr.cpp(3): warning C4627: “#include <osgDB/ReadFile>”: 在查找预编译头使用时跳过
1>          将指令添加到“StdAfx.h”或重新生成预编译头
1>c:\users\administrator\desktop\test\rrrr\rrrr\rrrr.cpp(10): fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.88
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 =======
这是什么情况?
发表于 2013-1-22 14:29:12 | 显示全部楼层
很好很详细,楼主亲测的就是好!
发表于 2012-9-4 08:08:20 | 显示全部楼层
哈哈,不错哦
发表于 2012-9-4 08:35:04 | 显示全部楼层
分级:7.1啊  你这机器太给力了
 楼主| 发表于 2012-9-4 20:33:33 | 显示全部楼层
liuzhiyu123 发表于 2012-9-4 08:08
哈哈,不错哦

嘿嘿 过奖啦
发表于 2012-9-6 17:26:23 | 显示全部楼层
谢谢分享,已经移动到教程区
发表于 2012-9-13 15:38:08 | 显示全部楼层
您好,我的电脑是32位的,我选择的是X64,但是在编译过程中出现好多奇怪的错,,在install编译的时候就编译不成功,请问是什么原因呢?
发表于 2012-9-13 23:27:59 | 显示全部楼层
jghill 发表于 2012-9-13 15:38
您好,我的电脑是32位的,我选择的是X64,但是在编译过程中出现好多奇怪的错,,在install编译的时候就编译 ...

32位的是x86
发表于 2012-9-14 10:45:37 | 显示全部楼层
刚开始学习osg,正在看这个教程,帮助很大
发表于 2012-9-16 13:03:54 | 显示全部楼层
相当不错啊,谢谢楼主
发表于 2012-9-16 17:28:59 | 显示全部楼层
楼主,你好,感谢你的教程分享,我安装流程走了,但是碰到点问题
我用的qt是4.8.2版本,其余的都是教程里面说的环境
在编译osg core中的osgQt库时,有2个链接错误,描述如下
  1. GraphicsWindowQt.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class QCursor & __thiscall QCursor::operator=(class QCursor &&)" (__imp_??4QCursor@@QAEAAV0@$QAV0@@Z),该符号在函数 "public: virtual void __thiscall osgQt::GraphicsWindowQt::setCursor(enum osgViewer::GraphicsWindow::MouseCursor)" (?setCursor@GraphicsWindowQt@osgQt@@UAEXW4MouseCursor@GraphicsWindow@osgViewer@@@Z) 中被引用

  2. QGraphicsViewAdapter.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class QImage & __thiscall QImage::operator=(class QImage &&)" (__imp_??4QImage@@QAEAAV0@$QAV0@@Z),该符号在函数 "public: __thiscall osgQt::QGraphicsViewAdapter::QGraphicsViewAdapter(class osg::Image *,class QWidget *)" (??0QGraphicsViewAdapter@osgQt@@QAE@PAVImage@osg@@PAVQWidget@@@Z) 中被引用
复制代码
项目属性里面包含了以下qt库文件
d:\Qt\4.8.2\lib\QtCored4.lib
d:\Qt\4.8.2\lib\QtGuid4.lib
d:\Qt\4.8.2\lib\QtOpenGLd4.lib

这里提示找不到QCursor和QImage的 =运算符重载,但是lib都包含进去了,实在找不到问题在哪,如果楼主知道,请指点,谢谢!
发表于 2012-9-17 08:04:55 | 显示全部楼层
 楼主| 发表于 2012-9-19 19:18:56 | 显示全部楼层
jghill 发表于 2012-9-13 15:38
您好,我的电脑是32位的,我选择的是X64,但是在编译过程中出现好多奇怪的错,,在install编译的时候就编译 ...

因为你的电脑是32位的 但是你却选择64位的去编译 肯定会出问题的 而且由于现在64位的有些不支持 所以建议通通选择X86
 楼主| 发表于 2012-9-19 19:35:35 | 显示全部楼层
xiacanni 发表于 2012-9-14 10:45
刚开始学习osg,正在看这个教程,帮助很大

我忘了中间一个比较重要的操作 所以建议你看下 我已经用红色较大的字体显示了 操作也很简单 复制粘贴就可以了
 楼主| 发表于 2012-9-19 19:36:15 | 显示全部楼层
xiazaitmd 发表于 2012-9-16 17:28
楼主,你好,感谢你的教程分享,我安装流程走了,但是碰到点问题
我用的qt是4.8.2版本,其余的都是教程里面 ...

我忘了中间一个比较重要的操作 所以建议你看下 我已经用红色较大的字体显示了 操作也很简单 复制粘贴就可以了  不知道这个是不是会影响 你试下吧
 楼主| 发表于 2012-9-19 19:36:36 | 显示全部楼层
jghill 发表于 2012-9-13 15:38
您好,我的电脑是32位的,我选择的是X64,但是在编译过程中出现好多奇怪的错,,在install编译的时候就编译 ...

我忘了中间一个比较重要的操作 所以建议你看下 我已经用红色较大的字体显示了 操作也很简单 复制粘贴就可以了
发表于 2012-9-26 09:44:51 | 显示全部楼层
Hall_Zz 发表于 2012-9-19 19:35
我忘了中间一个比较重要的操作 所以建议你看下 我已经用红色较大的字体显示了 操作也很简单 复制粘贴就可 ...

好的
发表于 2012-9-26 17:47:18 | 显示全部楼层
本帖最后由 xiacanni 于 2012-9-26 18:13 编辑
Hall_Zz 发表于 2012-9-19 19:36
我忘了中间一个比较重要的操作 所以建议你看下 我已经用红色较大的字体显示了 操作也很简单 复制粘贴就可 ...


我是win7_64的,3rd也是64,all_build编译显示成功480失败2,install显示0成功失败4。
四个里面有两个说是  LINK : fatal error LNK1104: 无法打开文件“freeglut.lib”
怎么解决啊?


.....突然发现楼主已经写了,错误跟我一样。。。。
发表于 2012-9-26 20:51:38 | 显示全部楼层
32位的编译成功了,第六项osgversion,osglogo,osgviewer cow.osg试了,第七项还没试
发表于 2012-9-27 15:11:21 | 显示全部楼层
写得很详细,非常感谢。暂时还没碰到问题。
发表于 2012-11-6 16:11:29 | 显示全部楼层
安装源码工具的链接失效了,怎么办
发表于 2012-11-6 16:18:38 | 显示全部楼层
zhw263356 发表于 2012-11-6 16:11
安装源码工具的链接失效了,怎么办

http://www.openscenegraph.com/ 官网自己去下载
发表于 2012-11-6 16:27:53 | 显示全部楼层
新手真的不知道从哪儿找啊,求帮助...
发表于 2012-11-6 16:28:01 | 显示全部楼层
新手真的不知道从哪儿找啊,求帮助...
发表于 2012-11-22 21:29:13 | 显示全部楼层
我擦 超级详细图文攻略啊。。据说用自己编译的OSG比较好 是为什么呢 有源码? 谢谢分享! 收藏了。。
发表于 2012-12-1 18:46:05 | 显示全部楼层
我64位win7系统,留了x86的第三方库,cmake中Configure下选择Visual Studio 10,为什么还是编译失败了呢?

第一次:

已用时间 00:00:00.55
========== 生成: 成功 496 个,失败 2 个,最新 0 个,跳过 0 个 ==========

第二次:

生成失败。

已用时间 00:00:01.53
========== 生成: 成功 4 个,失败 4 个,最新 492 个,跳过 0 个 ==========

osg路径1

osg路径1

osg路径2

osg路径2
发表于 2012-12-5 16:08:15 | 显示全部楼层
谢谢楼主,当初自己也是摸索了好久才弄出来的,这样能帮助不少新人。
发表于 2013-3-1 10:21:20 | 显示全部楼层
楼主好,我刚装了下系统win7 32位,也是在vs2010 下编译,完了安装,结果运行osgviewer.exe 提示总是应用程序无法正常启动(0x0000000d),,,,,郁闷中,求帮助哈
捕获2.PNG
发表于 2013-3-1 12:35:28 | 显示全部楼层
好了,可是渲染的牛有点问题,飞机没问题。。。
未命名.jpg
发表于 2013-3-7 10:35:24 | 显示全部楼层
正在学习中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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