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

VS2008下配置Ogre工程

2018年05月05日 ⁄ 综合 ⁄ 共 4626字 ⁄ 字号 评论关闭

        前面我们已经讲过了如何安装Ogre SDK1.7.1,配置Ogre开发环境。本文将讲述如何使用VS2008进行Ogre工程。

一、几个基本文件类型

        1、xxx.h头文件。Ogre中包含了众多的头文件,分散在很多目录下。在其SDK目录下,

       (1)boost_1_42/boost目录下含有头文件,boost的意思是“改善、促进”。主要为Ogre程序提供线程支持。

       (2)include目录。目录名已经很明显的说明了这个里面存放的全部是头文件。它下面有两个子目录:

         OGRE目录:这里面存放的是Ogre 3D的核心文件,不管是什么Ogre程序,只要用到头文件,一定会用到这里面的文件。

         OIS目录:显然,这个目录存放的是输入输出需要的头文件。它是一个输入库,不属于Ogre 3D,是一个独立的部分,属于依赖库。如果你是安装的SRC版(源码版)的Ogre,那么就需要下载依赖库,因为SRC版的Ogre不包含这个库。

        (3)Samples/common/include目录。这里面存放的是Ogre示例程序需要的通用的头文件。每个示例程序或多或少的会用到头文件,有一些头文件是单独对应于某个示例程序,有一些头文件则是很多示例程序都会用到,所以将这样的头文件放到common目录下。

        在上述的三个头文件目录,第一个基本不会用到,第三个一般只用于示例程序,第二个目录使用的最频繁。

        2、xxx.lib库文件。Ogre中同样有很多的库文件。在SDK目录下:

      (1)boost/lib目录。如果使用了boost,那么这里面存放的lib文件必须附加到程序中。

      (2)lib目录。这个目录有两个子目录:

        debug目录:这里面的lib文件都在文件名后都有_d后缀,以表示是在debug模式下使用的lib文件。它们提供了更好的debug支持。

        release目录:这里面的lib文件用于release模式。

        对于库文件,第一个目录基本不会用到。第二个目录经常使用,其中的OgreMain_d.lib和OIS_d.lib经常链接到程序中,当然,是debug模式下,如果是release模式,对应的链接库是OgreMain.lib和OIS.lib。

        OgreMain_d.lib  它包含了Ogre 3D的接口信息,并告知应用程序载入OgreMain_d.dll

        OIS.lib  它包含了Ogre 3D输入输出系统信息,并告知应用程序载入OIS.dll

        3、xxx.dll动态链接库文件。动态链接库文件也是一种库文件,不同于静态链接库文件,它使得我们不用重新编译程序就可以转换dll,只要库的接口不改变。

        dll文件基本上都可以在SDK目录下的bin目录下找到,debug子目录和release子目录下都有,一般它要放在Ogre程序的目录下,这样程序运行时才不会出现找不到xxx.dll文件的异常。

        OgreMain.dll  这个是最重要的dll文件,它是编译过的Ogre 3D源代码

        Plugin_xxx.dll  插件dll文件,通过Ogre提供的接口可以添加这些插件,插件可以用来增强Ogre的功能

        RenderSystem_xxx.dll   渲染系统的包装,包括D3D9、OPENGL等,对应不同的渲染系统。    

二、配置VS2008的通用属性

       1、打开VS2008,在菜单栏,工具——选项——项目和解决方案——VC++目录,可以看到右边的配置框,平台是win32,表示当前的系统环境,右边的下拉框中有多个选项:

 

           2、选择包含文件。我们可以看到$(VCInstallDir)include,这个是安装VS后就有的,VCInstallDir表示VC的安装目录,这个目录下的include目录里面包含了C/C++语言常用的头文件,如iostream.h,stido.h,对应的目录就是VS安装目录的VC\include目录。剩下的几个$表示的目录类似,都是安装后自带的。

        这里的目录有什么用呢?在我们使用VS编写程序的时候,当我们使用#include引入头文件时,这里出现的目录会帮助我们。我们知道#include<>表示头文件是由编译器自带的,或者是可以由系统的环境变量定位到的,例如iostream,它就是VC++自带的。#include“”表示头文件是当前目录下可以找到的或者是环境变量PATH定义的路径下的。所谓当前目录,就是编译器设置的VC++目录,也就是这里的目录。我们在编写程序时经常需要使用#include""来引入头文件,特别是现在强调开发的模块化,关于类的重用,类的继承,我们需要包含想要的头文件。为了让程序能够找到头文件,我们必须指明头文件所在的位置,我们有两种方法:一是将需要的头文件全部复制到当前目录,二是通过某个方法定位到头文件所在的目录。第一种方法适合与发布程序,如果程序只在本机运行测试,没有必要复制这些头文件,我们一般选择定位到这些头文件的方法。

       如何定位到这些头文件呢?我们可以有两种方法:一是在程序中直接指明,例如我们可以这样写,#include"C:\OGRE1-7-1\OgreSDK_vc9_v1-7-1\include\OGRE\ogre.h",这样写很麻烦,至于是否可行,请自己去尝试;另外一种方法就是在包含目录中添加这个路径,例如我们将C:\OGRE1-7-1\OgreSDK_vc9_v1-7-1\include\OGRE添加进去,这样我们直接写#include"ogre.h"就可以定位到这个头文件了。很明显,第二种方法好。

       现在为了编写Ogre程序,我们添加包含文件:添加C:\OGRE1-7-1\OgreSDK_vc9_v1-7-1\include\OGRE     C:\OGRE1-7-1\OgreSDK_vc9_v1-7-1\include\OIS     C:\OGRE1-7-1\OgreSDK_vc9_v1-7-1\boost_1_42\boost,这样我们可以直接定位到这些目录下的头文件了。这里建议添加另外一个目录C:\OGRE1-7-1\OgreSDK_vc9_v1-7-1\include,这是因为有一些程序使用的是#include"OGRE\ogre.h",如果只有上面三个是定位不到的。

       我们同样将第一步里面讲的lib文件添加到库目录中。

 

             3、上面我们就完成了通用的VS2008工程的通用配置。现在我们可以开发Ogre工程了。

        4、文件——新建——项目——windows窗体应用程序,取个名字,设置好workspace,确定,选择空项目,完成。这样我们就新建了一个windows窗口工程,它的入口函数是WinMain,如果刚才建立的是Win32控制台应用程序,那么入口函数就是main。

        5、我们可以为工程添加文件,在头文件上右键——添加——新建项,可以选择.h文件,同理可以在源文件上右键添加cpp文件,当然这些都不固定,可以在任意位置添加,然后将它拖动到目录下。

        6、在工程上右键——属性,会出现一个对话框,上面有下拉菜单,一般选活动(Debug),平台当然是win32。这样工程就是在debug模式下进行开发。

       配置属性——C/C++——常规,在右边可以看到“附加包含目录”,这个是工程的头文件目录,我们在配置VS2008时已经设置好了包含目录,如果我们仅使用那些目录下的头文件,那么这里可以空着,如果我们还需要一些那里面不包含的头文件,我们必须在这里填上路径。

       链接器——输入,在右边可以看到“附加依赖项”,这里我们就需要填上OgreMain_d.lib和OIS_d.lib,这样就把这两个库文件链接到工程中了。

       7、好了,工程配置完成了,我们可以编写Ogre程序了。下面是一个很简单的示例程序:

#include "ExampleApplication.h"

class TutorialApplication : public ExampleApplication { protected: public:  TutorialApplication()  {  }

 ~TutorialApplication()  {  } protected:  void createScene(void)  {  } };

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 #define WIN32_LEAN_AND_MEAN #include "windows.h"

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) #else int main(int argc, char **argv) #endif {  // Create application object  TutorialApplication app;

 try {   app.go();  } catch( Exception& e ) { #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32   MessageBoxA( NULL, e.what(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL); #else   fprintf(stderr, "An exception has occurred: %s/n",    e.what()); #endif  }

 return 0; }

        8、完成了上面步骤后,编译可以通过,但是程序运行时会出现异常。这里需要做两步工作:

      (1)将resource_d.cfg    plugins_d.cfg      OgreMain_d.dll       OIS_d.dll四个文件从Ogre目录中复制,放到workspace下的bin/debug目录下

      (2)修改resource_d.cfg文件。这个在配置Ogre SDK文中已讲过了。

        9、运行应用程序,这次可以正常运行。

 

参考:

http://wiki.ogrecn.com/wiki/index.php?title=%E6%96%87%E6%A1%A3:%E5%88%9B%E5%BB%BA%E7%AC%AC%E4%B8%80%E4%B8%AA%E7%A8%8B%E5%BA%8F

http://wiki.ogrecn.com/wiki/index.php?title=%E6%96%87%E6%A1%A3:%E4%BD%BF%E7%94%A8Visula_Studio_2008_%E5%88%9B%E5%BB%BAOgre%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F

http://blog.csdn.net/kanelu/article/details/4395491

抱歉!评论已关闭.