osg3.2.1+vs2010++QT5.4.2+win7 64编译方法

来源:互联网 发布:pbft 共识算法 实验 编辑:程序博客网 时间:2024/04/29 21:55

(一) VS2010

    VS2010的安装网上教程很多,不再叙述。

(二) Qt

    在VS中开发程序,需要下载Qt安装包和Qt的VS插件。

    我用的版本是Qt5.4.2 for Windows(VS2010,OpenGL)、VisualStudio Add-in 1.2.5 for Qt5。

    Qt装好后需要设置系统环境变量,在Path里加入D:\Qt\Qt5.4.2\5.4\msvc2010_opengl\bin

    下载地址:http://qt-project.org/downloads

(三) OSG(OpenSceneGraph)

1、首先要下载程序包,可到:链接:http://pan.baidu.com/s/1bnUPZnL 密码:s2ko,下载,它包括:OpenSceneGraph-3.2.1-rc3.zip、osg-data-master.zip、3rdParty_VC10_x86_x64.zip

2、在E盘创建一个osg3.2文件夹,将这三个文件放入到该文件夹内并解压,将解压的文件夹分别改为:OpenSceneGraph、3rdParty、data,如下图所示:


3、将3rdParty文件夹下的x64删除,只保留x86,这是一个第三方插件,比如要读取文字文件或者png文件,都是通过这个插件来读取的。

4、在OpenSceneGraph文件夹下创建一个build文件夹,之后的编译工程都在此文件夹下进行,不至于最后文件都放在一起不好区分。

5、安装CMake3.2,或者其他版本的也可以。

6、打开CMake (cmake-gui),然后将OpenSceneGraph文件夹下的CMakeLists.txt文件拖放到CMake中,然后更改编译路径,如下图所示:


7、点击Configure按钮,然后在弹出的对话框中选择VS2010,如下图所示:


8、点击完成之后,会出现以下界面:


9、修改ACTUAL_3RDPARTY_DIR目录,改成D:/osg3.2/3rdParty/x86,注意:如果不更改目录选择默认的,有可能第三方插件有部分会没有,比如读取文字字体插件以及读取png图片插件,没有这些插件就无法读取字体和图片,然后修改CMAKE_INSTALL_PREFIX安装目录,就是将库文件以及bin文件安装到那个位置,这里我们选择:E:/osg3.2/OpenSceneGraph,并且将BUILD_OSG_EXAMPLES打上对勾,配置如下图所示:


10、点击Configure之后会出现如下图所示,然后将BUILD_MFC_EXAMPLE和Advanced打上对勾,如下图所示:


<!—

如果想要生成Qt相关的工程,也要选择build openthreads with Qt;

默认勾选的   (注意,QT的path路径必须设置好

 

其他的选项也要逐一检查下;

 

如果有多个Qt版本的话记得选择正确的版本;

我的情况是,安装了480版本,自己编译了550,程序匹配的是480,但是自己编译的Qt没有相应的库,比如D:\Qt\4.8.0\plugins\designer\arthurplugin.dll,所以在此处就将就了下,没有选择自己编译的库,用的安装的480版本;

-->


11、再次点击Configure,最后就会出现如下界面:


如果这过程中下面的这个区域: 


出现了红色的乱码,我提醒下可能是跟你的VS10的一些默认项目文件存放的路径有关,之所以会乱码是因为可能上面说到的路径有中文。所以建议不要去修改VS10的一下默认的存放的路径,避免不必要的错误。当然随着这步勾选上BUILD_MFC_ EXAMPLE,正常的情况应该是中间区域的红色会全部消失,但是下面的区域你去查看会发现任然有些红色的语句警告,这无关紧要。可继续进行下一步。

  12、最后点击Generate按钮,最后生成相应的工程,可在D:\osg3.2\OpenSceneGraph\build文件夹下生成相应的信息,如下图所示:


13、打开OpenSceneGraph.sln进行编译,在vs中选择批处理->然后选择ALL_BUILD的Debug和Release,如下图所示,然后选择生成:


14、点击生成之后就进入了编译,这个过程大概要4个小时,如下图所示,编译全部成功


15、编译完成之后再次打开批处理,将ALL_BUILD的Debug和Release对勾去掉,然后选择INSTALL的Debug和Release版本,点击生成,如下图所示:


16、这个过程就时间就很短了,最后生成结果如下图所示:


17、到此osg编译完成。


__________________________——————————————————————————————————


六.环境变量设置

右击“计算机”,然后“属性”,在计算机属性窗口的左边有个高级系统设置,

对系统变量设置如下:

OSG_FILE_PATH: D:\OSG\data      若无此变量,自己在电脑中添加  (没有冒号,注意)

PATH:D:\OSG\OpenSceneGraph\build\bin;

可在命令行进行测试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++目录”,在包含目录添加:D:\OSG\OpenSceneGraph\build\include

在库目录添加:D:\OSG\OpenSceneGraph\build\lib.

将D:\OSG\OpenSceneGraph下的bin,include,lib文件夹拷贝到D:\OSG\OpenSceneGraph\build中,选择文件夹合并,否则将会出现基本头文件链接不上

e) 打开项目属性的链接器,输入里,附加依赖项加上:

OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgParticled.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgTextd.lib
osgUtild.lib
osgViewerd.lib

f)运行,效果如下图:

————————————————————————————————

可能出现的问题:

1.出现无法解析的外部文件,说明库没连接上,但是其实是链接上了的,这时只需要改动  解决方案配置与解决方案平台,Debug和release与X64和WIN32互相搭配试一试。

,没有就新建一个

2.出现计算机中丢失zlibd1d.dll,将*:\OSG\3rdParty_x86_x64\x86\bin或者X64下的zlibd1.dll、zlib1.dll和zlibd.pdb文件拷到D:/OSG/OpenSceneGraph-3.0.1\bin\bin目录下,这样应该就可以运行了。

3.根据不同的电脑选择。可能出现X86与X64之间的问题,原因在于平台没有选对,最好的方式是重新建立一个新项目,然后代码进行复制后,跟第一个问题一样,选择对应的搭配尝试。


1 0