文章部分来自http://blog.csdn.net/kun1234567/archive/2008/04/08/2259450.aspx但是我按照他安装的并不能运行,而且现在已经出了SDK跟BIN版本,完全不必自己编译源代码了。之所以贴出来,算是一个补充吧
CEGUI 0.6.1安装与配置
第一. 什么是CEGUI?
CEGUI是一个游戏UI库,开源,使用XML作资源定位,支持lua脚本,支持多字节语言的显示,功能强大且灵活,目前的稳定版本是0.6.1,bug和未完成的东西都不少,然而这也是它的魅力之一,我们可以对其进行修改和扩充。使用CEGUI完全可以制作出一流水准的游戏UI来(引自互联网某人)。目前ORGE已经放弃开发其自身的UI而使用CEGUI,可见,CEGUI潜力巨大。另外,著名的游戏《天龙八部》使用的核心之一就是:ORGE和CEGUI。
第二. 下载与安装。
CEGUI官方网站:http://www.cegui.org.uk/wiki/index.php/Main_Page,目前最新版本0.6.1.偶向来都是偷懒人士,既然有现成的SDK,那为何还要自己编译呢(仅限于WINDOWS)。下载完SDK,解压,放到C:/CEGUI_SDK,例如。然后把C:/CEGUI_SDK/BIN下的东西全复制到C:/WINDOWS/SYSTEM32里面去。(当然也可以不复制,偶是懒人,懒得设置些乱七八糟东西)
然后打开VS2005,工具,选项,项目和解决方案,VC++目录,包含文件,
输入(或者选择):
C:/CEGUI_SDK
C:/CEGUI_SDK/INCLUDE
C:/CEGUI_SDK/dependencies/include
C:/CEGUI_SDK/Samples/common/include
好吧,也许有人会骂我是大笨蛋,骂贝。偶是懒人,不加的后果就是编译错误,错了你们就知道为什么了。
库文件:
C:/CEGUI_SDK/LIB
C:/CEGUI_SDK/dependencies/lib
编译器就到此设置完毕。
第三. HELLOWORLD
吃东西得慢慢来。在创建HELLOWORLD之前,你可不必着急把sample里面的例子拿出来编译,(我就是这么作的,结果,。。。。。N个错误和LNK不说了。。。。),令我纳闷了许久,为什么sample的例子可以正常编译而自己考出来就不得了呢。难道以后创建工程都要在sample底下创建了吗。非也。
但也不全错。Sample为我们创建了一个框架。我们离不开sample~至少在成为高手之前。使用sample的框架,我们就可以很轻易的创建自己的HELLOWORLD。这不是扯淡。Sample为我们作的好比MFC框架,你是愿意自己写SDK呢还是使用MFC创建一个窗口?答案是显然的。这里把sample框架比作MFC也许有点不恰当。好吧,反正就那么回事。
在遭遇找不到文件CEGUISampleHelper.dll,CEGUISampleHelper.lib等等焦头烂额的错误之前还是乖乖按照步骤去作把。别问为什么,做完自然明白。
把C:/CEGUI-SDK/Samples/common下的INCLUDE 和SRC里面的东西拷贝到D:/COMM(- -!我真的是太懒得说了)
简单介绍一下每个文件的作用:
CEGuiBaseApplication.h // *必须的
CEGuiD3D81BaseApplication.h // DX8.1渲染层
CEGuiD3D9BaseApplication.h // DX9.0渲染层 如果没有安装DX9.0SDK,就不要包含
CEGuiIrrlichtBaseApplication.h // Irrlicht渲染层 如果没有安装Irrlicht1.4SDK,就不要包含
CEGuiOgreBaseApplication.h // Ogre渲染层 如果没有安装Irrlicht1.4SDK,就不要包含
CEGuiOpenGLBaseApplication.h // OpenG渲染层 如果没有安装任何SDK,就是必须的
CEGuiRendererSelector.h // *必须的
CEGuiSample.h // *必须的
CEGUISamplesConfig.h // 该文件在你使用Ogre或OpenGL时是必须的
Win32AppHelper.h // 该文件在你使用DX9.0渲染层时是必须的
Win32CEGuiRendererSelector.h // *必须的
///以上文件作用描述来自踏入神的领域的CSDN BOLG作者kun1234567 昵称kun(小龙)
经由一次失败(渲染器为空)之后,我不再按照他所说的文件来删改,也可能是由于编译器设置错误。总之,最后包含如下几个文件:
CEGuiBaseApplication.cpp
CEGuiBaseApplication.h
CEGuiD3D9BaseApplication.cpp
CEGuiD3D9BaseApplication.h
CEGuiOpenGLBaseApplication.cpp
CEGuiOpenGLBaseApplication.h
CEGuiRendererSelector.cpp
CEGuiRendererSelector.h
CEGuiSample.cpp
CEGuiSample.h
CEGUISamplesConfig.h
DeviceReset_Direct3D9.cpp
Win32AppHelper.cpp
Win32AppHelper.h
Win32CEGuiRendererSelector.cpp
Win32CEGuiRendererSelector.h
多点也没啥,(再多我可不敢保证了,反正加那个GTK我编译出错了),明显没必要的去掉就行了。我就是这么懒。
第四. 项目的编译器设置
打开VS2005,新建-从现有代码创建项目-选择D:/COMM
选中这个项目。修改他的属性。(记得选release,反正我就是懒~)
项目-属性-配置属性-常规-输出目录:先前我们建立的./release(比较习惯VC6~)
项目-属性-配置属性-常规-中间目录:./release
项目-属性-配置属性-项目默认值-配置类型:动态库(.dll)。
项目-属性-配置属性-项目默认值-字符集:使用多字节字符集。
项目-属性-配置属性-C/C++ - 预处理器-预处理定义:
_CRT_SECURE_NO_DEPRECATE
HAVE_CONFIG_H
CEGUISAMPLE_EXPORTS
项目-属性-配置属性-连接器-输入-附加依赖项:
CEGUIBase.lib
freeglut.lib
OpenGLGUIRenderer.lib
DirectX9GUIRenderer.lib
GLU32.lib
OpenGL32.lib
项目-属性-配置属性-连接器-系统-子系统-windows
多嘴一句:某次运行vs.net 2005时就弹出对话框说无法找到MSVCR80D.dll文件。在网上查了一下,原因好像是因为fat32的文件系统的时间戳有问题,ntfs分区下就没这个问题解决方案是:在编辑状态下,项目-属性 - 配置属性 - 清单工具,将右面的“使用FAT32解决办法”选为“是”即可
然后开始编译这个comm项目,应该顺利通过。看好release文件夹下的comm.dll~这可是个好东西。
第五.第一个可以‘独立’(脱离sample目录)运行的例子程序
然后把例子里面的随便一个例子的cpp和头文件拷贝出来,例如我拷贝的就是FalagardDemo1里面的代码,放到桌面上~就成了
桌面/ FalagardDemo1/ Sample_FalagardDemo1.h
桌面/ FalagardDemo1/ Sample_FalagardDemo1.cpp
如刚才comm项目一样,点解决comm方案(不是项目),文件-新建-从现有代码创建项目。选择桌面的 FalagardDemo1这个文件夹,然后手动把这文件夹里面的文件.h.cpp添加到VS2005.
一切完毕以后,等等!别着急编译撒。
点FalagardDemo1项目。还需要配置他的属性。(当然本人配置的是release属性,反正我就是懒)
项目-属性-配置属性-项目默认值-配置类型:Windows应用程序(.exe)。
项目-属性-配置属性-项目默认值-字符集:使用多字节字符集。
项目-属性-配置属性-C/C++ - 预处理器-预处理定义:改为
_CRT_SECURE_NO_DEPRECATE
HAVE_CONFIG_H
项目-属性-配置属性-连接器-输入-附加依赖项:
CEGUIBase.lib(debug版本的就是CEGUIBase_d.lib)
项目-选择项目依赖项-comm(瞧,我们还是需要sample的框架)
项目-属性-配置属性-连接器-系统-子系统-控制台。
然后编译器的设置就完毕了。
别忘记设置FalagardDemo1为启动项目。
第六.最终的成功与失败?
编译~应该一切顺利?2成功~OMG,成功了。等等,别着急运行,好吧,你还是运行了。祝贺你收到一个dll找不到的错误。那就把刚才生成的comm.dll复制到桌面的 FalagardDemo1文件夹里面咯。等下~你又运行了。好吧,又是一个异常。那么,别问为什么,把C:/CEGUI-SDK/Samples下的datafiles文件夹复制~粘贴到你桌面上吧。也就是跟FalagardDemo1同级的目录。为什么呢?正如kun(小龙所说)
“ datefile的相对路径是可以更改的,
在文件CEGuiBaseApplication.cpp中:
#ifndef CEGUI_SAMPLE_DATAPATH
#define CEGUI_SAMPLE_DATAPATH "../datafile"
endif
可以修改成你想要的任意路径,不过这样的话,你的datefile文件夹就又要挪位置了。“
现在可以运行了~界面出来了,感觉不错哦。
Kun(小龙)说的并不完全正确,而且又深奥,我看了半天,不得要领,而且出现了N多编译器错误,运行时错误,最后的最后终于正确运行了,可以又没法选择渲染器。(纳闷中),于是不敢再按照小龙说的,自己琢磨了下CEGUISamples.sln(这篇文章里所讲的它都有),于是,终于可以成功运行。
当然,更多技术层面的东西以及为什么,你可以到小龙的CSDN BOLG去看。闻道有先后。他可是高手。偶比较懒,另外,偶也还是新手。只能一步步摸索了。摸索到的东西,我乐意跟大家分享。
例子可以运行了,那我们的helloworld呢。以后创建的helloworld就象刚才工程那么设置好了,把它添进解决方案,依赖设置好,然后,一切就变得很简单。接下来就不是偶能够教你的了。自己琢磨例子吧。(其实偶也不会~正在学)
特注:应用程序正常初始化(0XC0150002)失败。可以通过安装vs2005的sp1补丁来解决。这个补丁我只装了不到一个小时的说~偶电脑不是很好,1.8的CPU,512内存如此而已~。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/glunoy/archive/2008/10/16/3084102.aspx