现在的位置: 首页 > 综合 > 正文

OGRE+VS2008环境搭建

2013年10月29日 ⁄ 综合 ⁄ 共 6082字 ⁄ 字号 评论关闭

        最近在搞OGRE的学习,第一件事就是环境的搭建,遇到了很多问题,所以记录下来,为后来者借鉴。

        下面分为四部分,介绍Ogre+Vs2008的环境配置:

    1、下载软件并依次安装

    2、配置环境

    3、调试错误

    4、个人遇到的问题

 

1、下载软件并依次安装。

        下面的软件是我个人的版本,其他版本出现问题,不在本文讨论的内容之中。

  1、VS2008 Professional (English,iso,3.3GB);

  2、VS2008 SP1(English,iso,831MB);

  3、DirectX SDK Jun2010exe,571MB);

  4、OgreSDK_vc9_v1-8-0(exe,65.4MB,解压之后包含sln文件,不需要用cmake软件对源文件编译);

        下载软件不用多说了,到官网用迅雷应该不成问题。

        安装过程中,VS2008 SP1可能会遇到是取消还是继续,点击继续就可以了;安装软件过程中,最好不要打开其他的应用程序;其他的问题自行解决。

2、配置环境。

        分为两小步:

  1、设置环境变量。

       Win7系统 -> 计算机 -> 属性 -> 高级系统设置 -> 环境变量中的配置:

       DirectX SDK Jun2010的变量设置为DXDIR,值为安装的路径,如D:\Microsoft DirectX SDK (June 2010)。

       OgreSDK_vc9_v1-8-0的变量设置为OGRE_HOME,路径如:D:\OGRE\OgreSDK_vc9_v1-8-0。

  2、配置VS2008。

   (1)VS2008 -> Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show directories for:中的配置:

           在Include files中添加$(DXDIR)\include和$(OGRE_HOME)\include、$(OGRE_HOME)\include\OGRE、$(OGRE_HOME)\boost。

           在Library files中添加$(DXDIR)\lib\x86和$(OGRE_HOME)\lib\Debug、$(OGRE_HOME)\boost\lib。

    (2)VS2008 -> Project -> Properties  -> Configuration Properties中的配置:

          (a)如果(1)中Include files中未添加对应的OGRE_HOME头文件,则需要在C/C++ -> General -> Additional Include Directories中添加需要的头文件,比如,如果编译OGRE自带的Demo文件,则需要添加:

            ..\..\boost;

            ..\..\include\OGRE;

            ..\..\include;

            ..\..\include\OGRE\PlugIns\PCZSceneManager;

            ..\..\include\OGRE\PlugIns\OctreeZone;

            ..\..\include\OIS;..\..\Common\include;

            ..\..\include\OGRE\RTShaderSystem;

            ..\..\include\OGRE\Terrain;

            ..\..\include\OGRE\Paging;

            include

          (b)C/C++ -> Preprocessor -> Preprocessor Definitions中添加WIN32;_WINDOWS;_DEBUG;_AFXDLL。

          (c)C/C++ -> Command Line -> Additional options中添加 /Zm1000 /fp:fast或者-Zm200。

          (d)如果(1)中Library files中未添加对应的OGRE_HOME静态库文件,则需要在Linker -> Input -> Additional Dependencies中添加需要的静态库文件,比如,如果编译OGRE自带的Demo文件,则需要添加:

            kernel32.lib
            user32.lib
            gdi32.lib
            winspool.lib
            shell32.lib
            ole32.lib
            oleaut32.lib
            uuid.lib
            comdlg32.lib
            advapi32.lib
            ..\..\lib\debug\OgreMain_d.lib
            ..\..\boost\lib\libboost_thread-vc90-mt-gd-1_49.lib
            ..\..\boost\lib\libboost_date_time-vc90-mt-gd-1_49.lib
            ..\..\lib\debug\OgreRTShaderSystem_d.lib
            ..\..\lib\debug\OgreTerrain_d.lib
            ..\..\lib\debug\OgrePaging_d.lib
            ..\..\lib\debug\OIS_d.lib

           通常,自己的项目按自己的需要添加,比如OgreMain_d.lib和OIS_d.lib是通常要引用的lib文件。

         (e)Debugging -> Working Directory中添加自己的工作目录,如:F:\OGRE项目文件\NullProject\Debug。一般如果系统定义好了,就不需要自己设置了。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

           操作到这个地方,OGRE自带的Demo应该可以运行了。如果运行不成功而又不能轻易解决问题的话,请继续向下看。 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

3、调试错误。通常我是通过两种方法调试OGRE的环境配置问题的错误:

  (1)查看orge.log。

           orge.log是OGRE程序运行之后,生成的日志文件。阅读之前,首先要确定OGRE程序是否已经运行了,如果OGRE程序还没进入,系统就已经出问题了,那么你看的日志文件还是上一次写入的,本次运行的过程并未写入到当前的log中,这种情况下,此方法失效。

           根据日志文件,查看错误。比如,可能是找不到某个头文件,则需要包含头文件;可能找不到lib文件,则需要引用lib文件;可能找不到dll文件,则需要把对应的dll文件放在你的可执行文件的目录下。当然还有其他类型的错误。

           这种方法是首选的调试不能轻易解决的bug。

  (2)查看可执行文件所在目录Debug文件夹中的*.cfg文件。

           *.cfg文件是配置(configuration)文件,一般Debug目录下有三个配置文件:ogre.cfg、plugins_d.cfg、resources.cfg。

           ogre.cfg是OGRE的基本配置文件,包括两个底层库——Direct3D9 Rendering Subsystem和OpenGL Rendering Subsystem,其中Full Screen可以自己修改,个人习惯设置为No,一般的问题不会出现在这个文件中。

           plugins_d.cfg是装载组件的配置文件。下面是某个项目的plugins_d.cfg文件:

           # Defines plugins to load

           # Define plugin folder
           PluginFolder=D:\OGRE\OgreSDK_vc9_v1-8-0\bin\Debug

           # Define plugins
           Plugin=RenderSystem_Direct3D9_d
           Plugin=RenderSystem_GL_d
           Plugin=Plugin_ParticleFX_d
           Plugin=Plugin_BSPSceneManager_d
           Plugin=Plugin_OctreeSceneManager_d
           Plugin=Plugin_CgProgramManager_d

           其中,第4行,PluginFolder的值要修改为自己安装的OGRE目录下组件所在的绝对路径,否则可能会出现找不到某个组件的错误。当然,如果是OGRE的Demo,其值为.即可。

          第6行,Plugin=RenderSystem_GL_d,这个组件是针对OpenGL的,如果你没有OpenGL相关库,则这句话就需要去掉了,否则可能会出现问题黑屏现象(其实不是黑屏,只是你的ogre.cfg文件中的Full Screen的值设为了Yes,如果设为No就不会出现黑屏现象,但是程序貌似卡死了)。

           resources.cfg是OGRE的资源配置文件。下面是OGRE的Demo项目中的resources.cfg文件:

           # Resource locations to be added to the 'boostrap' path
           # This also contains the minimum you need to use the Ogre example framework
           [Bootstrap]
           Zip=../../media/packs/OgreCore.zip

          # Resource locations to be added to the default path
          [General]
          FileSystem=../../media
          FileSystem=../../media/fonts
          FileSystem=../../media/materials/programs
          FileSystem=../../media/materials/scripts
          FileSystem=../../media/materials/textures
          FileSystem=../../media/models
          FileSystem=../../media/overlays
          FileSystem=../../media/particle
          FileSystem=../../media/gui
          FileSystem=../../media/DeferredShadingMedia
          Zip=../../media/packs/cubemap.zip
          Zip=../../media/packs/cubemapsJS.zip
          Zip=../../media/packs/dragon.zip
          Zip=../../media/packs/fresneldemo.zip
          Zip=../../media/packs/ogretestmap.zip
          Zip=../../media/packs/skybox.zip

          资源配置文件中,包含的是存放资源的绝对路径,上面是OGRE的Demo程序的资源配置文件。如果是自己的项目,则有以下两种方法初始化这个文件。

         一是,文件保持不变,把OGRE安装目录下的media文件夹拷贝到你的项目目录下;二是,文件中所有的../../修改为你安装的OGRE目录,比如:D:\OGRE\OgreSDK_vc9_v1-8-0。个人喜好第二种方法。

4、个人遇到的问题

      (1)编译和链接没问题,执行过程中弹出一个对话框,显示”应用程序无法正常启动(0xc0150002),请单击确定关闭程序“。

        遇到问题,到网上搜索了很多答案,比如说是路径配置的问题、版本的问题、处理器的问题等等,但是都不能解决我的问题。当然,或许是版本的问题,但是我的问题更让我哭笑不得。首先,程序是别人传给我的,而且编译没问题,那么就是链接库的配置问题了。但是我的头文件和lib库文件都配置的没问题,dll文件也放到了Debug目录下了,那么到底是什么原因呢?最后,找人帮忙,发现是dll文件本身存在问题。额,我自己受了罪,不想让后来者受同样的罪,所以强烈建议:如果要拷贝dll文件到自己项目的Debug目录下,一定要从新安装的Ogre目录下拷贝

       (2)编译没问题,链接有问题,出现“error PRJ0003 : 生成“rc.exe”时出错”的问题。

         额,这个问题貌似也是通过问题(1)的方法解决的,这个问题我是稀里糊涂地撞见了,又稀里糊涂地解决了,不过可以确定的是,问题的来源是库的配置问题

        (3) m_OgreRoot = new Ogre::Root("plugins_d.cfg","Ogre.cfg","Ogre.log");执行到这句代码时出现内存访问错误。

         工作路径配置错误:”项目->属性->调试->工作目录“的值改为“项目->属性->常规->输出目录”的值。

 

======================================================================

2012年6月21日 于合肥新禧机房125

======================================================================

 

抱歉!评论已关闭.