osg+vs2013+win7环境搭建部分问题汇总
前言:因为做毕设需要搭建osg环境,对于小白来说过程异常艰苦,搭建过程中遇到的各种问题很不友好,所幸得到各路大佬的支招,最终完成了搭建。这里把自己搭建过程中所遇到的全部问题和解决方法列出来,并贴上相关原帖地址,希望对一样刚接触osg的盆友有所帮助。文章主要参考了
http://bbs.osgchina.org/forum.php?mod=viewthread&tid=9223&highlight=osg%2Bvs2010&_dsign=253e9edb
一 准备工作:
1.Cmake下载安装:我用的cmake-3.7.0-rc1-win32-x86.msi 直接去官网https://cmake.org/files/可下载历史版本
2.Vs2013下载安装
注意:最开始用的是vs2010,但是处理安装源码生成的sln文件时会随机闪退,vs2013没遇到这个问题
3.Osg源码下载:OpenSceneGraph-3.4.0.zip 下载地址 http://www.openscenegraph.org/index.php/download-section
4.Osg数据包下载:OpenSceneGraph-Data-3.4.0.zip
下载地址 http://www.openscenegraph.org/index.php/download-section
5.Osg第三方库下载:http://download.osgvisual.org/3rdParty_VS2013_v120_x86_x64_V9_full.7z
注意:如果自己去osg网站上下osg第三方库,有small和full两个版本,建议使用full版本
下载后文件夹里有两个文件(x86和x64)删去x64版本(理由详见http://bbs.osgchina.org/forum.php?mod=viewthread&tid=9223&highlight=osg%2Bvs2010&_dsign=253e9edb)
6.在E盘(盘符随便)下新建名为osg文件,将3 4 5 步里的文件解压于此(可以改下名字 好认),记得3rdParty(osg第三方库)中只存放x86版本(第五步解压后删除x64文件夹,将x86文件夹下所有文件剪切到3rdParty文件夹下
)
二 安装源码
参考http://bbs.osgchina.org/forum.php?mod=viewthread&tid=9223&highlight=osg%2Bvs2010&_dsign=253e9edb
1.打开cmake,将OpenSceneGraph(源码包解压后文件夹)中文件 CMakeLists.txt 拖入cmake ,where to build the binaries选择 E:/osg/OpenSceneGraph ,点击configure 选择vs2013
注意:我出现过CMakeLists.txt拖入cmake没反应的情况,解决方法是将OpenSceneGraph的源码包解压到当前文件夹(将源码包放在建立好的osg文件夹下解压),解压出的CMakeLists文件可以拖入
注意:大佬们说要在OpenSceneGraph下建立build文件夹
where to build the binaries选择 E:/osg/OpenSceneGraph/build 这一步可以不考虑,不这样做也可以成功搭建
注意:如果出现下面的报错
error in configuration process,project files may be invalid
参考 https://blog.****.net/eggsdandan/article/details/75577995(不确定是否是造成这个问题的唯一原因,我是因为卸载 又重装过vs2010)
2.ACTUAL_3RDPARTY_DIR:选择 E:/osg/3rdPatry
BUILD_OSG_EXAMOLES: 打勾
CMAKE_INSTALL_PREFIX:E:/osg/OpenSceneGraph
然后 configure
注意:大佬们教程上会如下写,不明白为什么加/; 反正不加没问题,加了的那次后面sln会报很多错,不知道和这个有关吗
CMAKE_INSTALL_PREFIX:E:/osg/OpenSceneGraph/;
3.advanced 打勾
BUILD_MFC_EXAMPLE: 打勾
然后configure
接着点击Generate 在E:/osg/OpenSceneGraph 下生成一个OpenSceneGraph.sln 大小在460KB左右
如果where to build the binaries选择 E:/osg/OpenSceneGraph/build 则生成的OpenSceneGraph.sln在该目录下
三 编译sln
1. 将生成的sln文件拖入vs2013 选择生成-批生成 选择ALL_BUILD 的debug 和Release 然后点击生成 大概需要5h
2.上步完成后选择生成-批生成 选择INSTALL的debug和Release然后点击生成 时间大概1h(看大佬写的1h 我第一遍编没看时间 把报的错改好了以后重复该步骤只用了不到10min)
注意:
如果All_BUILD报错
下载安装 vc_mbcsmfc.exe
INSTALL报错这两个错 同上(我是ALL_BUILD出现这两个报错没管 直接生成的INSTALL 还会报这两个错)
注意:
如果INSTALL报错如下
error MSB3073: The command "setlocal
E:\cmake3.0.0\CMake\bin\cmake.exe-DBUILD_TYPE=Debug -P cmake_install.cmake
if %errorlevel% neq0 goto :cmEnd
:cmEnd
endlocal & call:cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq0 goto :VCEnd
:VCEnd" exitedwith code 1. C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets 132 5 INSTALL
以管理员身份运行vs2013(右键管理员没用 可以右键在 兼容性或者快捷方式-高级 里改) (参考:https://www.douban.com/note/512587853/)
四 环境变量设置
详见http://bbs.osgchina.org/forum.php?mod=viewthread&tid=9223&highlight=osg%2Bvs2010&_dsign=253e9edb
这里没出什么问题就不多赘述了
五 新建OSG项目测试
1.在VS2013下新建WIN32控制台程序, 添加一个cpp, 输入以下代码:
#include<osgViewer/Viewer>
#include<osgDB/ReadFile>
int main( int argc, char **argv )
{
osgViewer::Viewer viewer;
viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );
return viewer.run();
}
代码来源:
http://bbs.osgchina.org/forum.php?mod=viewthread&tid=9223&highlight=osg%2Bvs2010&_dsign=253e9edb
注意:一定要用 新建WIN32控制台 项目,否则代码在生成时会大量报错
2.添加库引用,右键项目,选择“属性”,选择“VC++目录”,在包含目录添加:C:\OSG\include,在库目录添加:C:\OSG\lib.打开项目属性的链接器,输入选项里,附加依赖项加上:OpenThreadsd.lib osgd.lib osgDBd.lib osgUtild.lib osgGAd.lib osgViewerd.lib osgTextd.lib 然后就可以运行了
注意:如果调试时显示计算机中丢失osg130-osgDBd.dll就重启电脑(对的 就是这样)
参考https://blog.****.net/wuwangrun/article/details/8203274
注意:调试时提示缺少zlib.dll和zlibd.dll。 解决方法是将D:/OSG/3rdParty_x86_x64/x86/bin下的zlib.dll和zlibd.dll文件拷到C:/OSG/bin目录下,这样应该就可以运行了。 参考https://blog.****.net/u013045316/article/details/51615226