文档章节

编译OSGOcean

哈全文
 哈全文
发布于 2016/12/07 11:28
字数 1253
阅读 27
收藏 1

步步编译OsgOcean

电脑:

操作系统:win7

编译器:vs2010

显卡:NVIDIA GeForce GTX 550Ti

准备工作

一 安装cmake

网络下载cmake,并安装;

我安装的是cmake-2.8.9-win32-x86.exe

二 下载OSG并编译

osgOcean 1.0.1是用osg开发的,所以要安装OSG,官网上说可以用OSG2.8.2编译,所以我下载了OSG2.8.2源码来编译。OSG的国外官网进不去,但是国内的osgchina可以下载源码,

网络地址:http://www.osgchina.org/projects/osgcn/wikicn/Downloads.php

目前下载OSG2.8.2只能通过该网址提供的svn来下载;下面是svn

http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.2b

编译OSG2.8.2

(一) 下载3rdParty_Win32binaries_2005_05_10.zip

可在http://www.osgchina.org/projects/osgcn/wikicn/Downloadscn/Dependencies.php下载

(二) 下载OpenSceneGraph-Data-2.0.zip

可在http://www.osgchina.org/projects/osgcn/wikicn/Downloadscn/SampleDatasets.php

(三) 通过cmake生成vs工程

将3rdParty_Win32binaries_2005_05_10.zip解压,将加压目录copy到osg2.8.2目录内

将OpenSceneGraph-Data-2.0.zip解压,将解压目录copy到osg2.8.2目录内

在osg2.8.2目录内建一个build目录,cmake会把vs工程产生到该目录下

打开安装的cmake,填写osgsource code目录与build binaries目录:

如图:

之后点击Configure,然后选择编译器

然后,点击finished

此时,cmake会显示出很多红色,表示需要配置,有些需要配置有些采用默认即可;

需要配置的相有:

ACTUAL_3DPART_DIR:填写上面解压3rdpart目录即可;编译32未程序,要包含x86子目录内容,如果64位填写x64目录,即:

E:\ocean\osg2_8_2b\3rdParty\x86或

E:\ocean\osg2_8_2b\3rdParty\x64

BUILD_MFC_EXAMPLE:选中

CMAKE_INSTALL_PREFIX:最后安装目录,也就是要把 bin目录,include目录,lib目录copy到该目录下,这样其他工程只要引用该目录内容,即可使用osg

点击generate,在build目录下回产生VS工程,打开工程build即可

用vs2010编译osg2.8.2会出现语法错误,如back_inserter错误,只要在文件开头包含

#include<iterator>即可

还可能遇到png错误,将

png_set_gray_1_2_4_to_8(png);

改为 png_set_expand_gray_1_2_4_to_8(png);

编译ALL_BUILD工程

编译INSTALL工程,此时可能遇到如下错误:

这个错误的意思是:

E:\ocean\osg2_8_2b\build\src\OpenThreads\win32目录下的中44行记录的

“E:/ocean/osg2_8_2b/build/bin/Debug/../../bin/ot11-OpenThreadsd.dll”找不到

把..翻译过来就是:“E:/ocean/osg2_8_2b/build/bin/bin/ot11-OpenThreadsd.dll”

根本不存在E:/ocean/osg2_8_2b/build/bin/bin/这个目录,查看E:/ocean/osg2_8_2b/build/bin/目录,发现ot11-OpenThreadsd.dll在E:\ocean\osg2_8_2b\build\bin\Debug目录下;

这个有两种办法解决这个问题:

方法一:“E:/ocean/osg2_8_2b/build/bin/Debug/../../bin/ot11-OpenThreadsd.dll”改成

E:\ocean\osg2_8_2b\build\bin\Debug

但是这种方法劳动量很大,很为工程中有cmake_install.cmake文件要修改;

方法二:把ot11-OpenThreadsd.dll copy到E:/ocean/osg2_8_2b/build/bin/目录下;

会有很多dll 需要copy;

再次build INSTALL工程,会出现如下错误:

意思是src/osgPlugins/osgAnimation/cmake_install.cmake文件的32行记录的

E:/ocean/osg2_8_2b/build/bin/Debug/../osgPlugins-2.8.2/osgdb_osganimationd.dll

找不到,解决方法同上面方法二;

Osg编译完毕

三 编译osgOcean

一 准备快速傅里叶变换库

有连个可用库:FFTW, FFTSS

我选择了FFTW,下载地址:

http://www.fftw.org/install/windows.html

加压之后,在启动vs命令行,并切换到解压目录:

然后运行如下三个命令:

lib /def:libfftw3-3.def
 lib /def:libfftw3f-3.def
 lib /def:libfftw3l-3.def

然后会在目录中生成.h文件.lib文件,这也是编译时要连接的文件;

(二)编译osgOcean 首先采用上面用cmake生成osg工程的步骤产生osgOcean工程;

生成结构如下:

打开osgOcean.sln,

编译ALL_BUILD

会出现一大堆连接错误,原因是:

没有连接.lib文件,工程属性中添加所有osg的.lib文件

注意也要把快速傅里叶变换的库也加进来;

再编译一次,成功,完毕;

把oceanExample设置为启动工程,把工作路径设置为exe所在目录:

把E:\ocean\osgOcean\osgOcean-Source-1.0.1\osgOcean中的resources目录copy到上面的工作目录中,这样exe可以找到纹理文件等;

启动exe,成功;

四 其他

编译过程中可能出现如下错误:

error C3767:'<': candidate function(s) not accessible

可能原因有连个:

一:因为cmake产生vs工程的时候配置不对;从新用cmake产生一遍即可

二:osg库不是自己编译的,而是从网络上下载的已经编译好的osg;自己编译osg即可

本人从osgchina下载osg2.8.4已经编译好的osg,然后编译osgOcean,但是出现了上面一的错误,后来自己编译了osg2.8.2(从svn下载),并从新用cmake产生了工程,编译成功了;

这里没有深入研究;

还可能有如下问题:

我笔记本win7,显卡GTX540,Osg采用较新版本3.01,而不是osg2.8.2,虽然能编译成功,但是会黑屏,什么都显示不出来;目前不知道原因;

本文转载自:http://blog.csdn.net/sohu_2011/article/details/7909803

共有 人打赏支持
哈全文
粉丝 14
博文 92
码字总数 22122
作品 0
海淀
其他
私信 提问
Linux/Mac 交叉编译 Android 程序

什么是交叉编译呢 简单地说,就是程序的编译的环境和它的运行的环境不一样。即在一个平台上生成另一个平台上的可执行代码。交叉编译的概念主要和嵌入式开发有关。 为何要有交叉编译 主要是由...

音视频直播技术专家
2017/06/29
0
0
Ubuntu11.10下编译android内核源码

在之前的文章中,为读者介绍了《Ubuntu Linux下android源码下载方法》、《Ubuntu11.10下配置android的Eclipse开发环境》、配置过程中遇到的一些问题,以及《Ubuntu11.10下android源码4.0.3的...

Taskiller
2012/01/11
0
0
fatal error C1010: unexpected end of file while...

在编译VC++6.0是,出现fatal error C1010: unexpected end of file while looking for precompiled header directive 的错误. 解决方法: 1、如果发生错误的文件是由其他的C代码文件添加进入当...

Mr&Cheng
2013/01/20
0
0
Android反编译(二) 之反编译XML资源文件

Android反编译(二) 之反编译XML资源文件 [目录] 1、工具 2、反编译步骤 3、重新编译APK 4、实例 5、装X技巧 6、学习总结 1、工具 1).反编译工具 apktool http://code.google.com/p/android-a...

老鹰a
06/29
0
0
编译compile和连接Link

编译 Compile 与链接 Link 要连接要先编译,如果没编译会连接时会自动编译。举个例子,如果你有两个文件,对 一个文件进行编译只是讲这个文件编译成了目标文件 .obj ,但是另外一个文件没有,...

水一样的人儿
2016/08/08
24
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
3
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部