Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1708629
  • 博文数量: 98
  • 博客积分: 667
  • 博客等级: 上士
  • 技术积分: 1631
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-27 15:59
个人简介

一沙一世界 一树一菩提

文章分类

全部博文(98)

文章存档

2021年(8)

2020年(16)

2019年(8)

2017年(1)

2016年(11)

2015年(17)

2014年(9)

2013年(4)

2012年(19)

2011年(1)

2009年(4)

分类: WINDOWS

2012-07-10 15:50:51

最近倒腾irrlicht引擎,添加中文显示和输入,真是不好搞,从网上搜出好多相关添加中文支持的例子,竟然没有一个可以适合我的情况的。不是编译不过,就是不能显示。也可能是自己没有完全理解别人提供的例子。
由于自己一直在做linux下的驱动和操作系统相关的工作,所以对vs2008也是相当不熟悉。甚至连怎么给一个工程添加头文件或者源代码文件也不知道怎么弄。还好有做vc++的同事帮忙,连试带蒙,反正是能显示了。前前后后大概搞了4,5天。下面我把过程详细的记录下来。
开始我用的版本是irrlicht-1.7.3,从可以发现 这个小日本的这个unicode补丁只发布到2010年4月,并且是irrlicht-1.7.1版本的补丁。所以接下来的工作都是在1.7.1版本上做的工作。

1 首先编译freetype,我采用的版本是freetype-2.4.8,可以从这里下载。具体怎么编译大家可以参考另外一博文,这个比较简单。编译完了以后,把freetype-2.4.8\objs\release_mt下的freetype.dll拷贝到irrlicht-1.7.1\bin\Win32-VisualStudio目录下,把freetype.lib拷贝到helloworld项目目录下。有人说编译成静态库就可以,我的不行,原因现在不详中,不知道怎么设置就可以。

2 从这里下载小日本写的补丁。后面我看能不能上传,要可以的话,我也上传给有关人士共享。解压缩以后产生IrrlichtML-1.7.1-win32Linux\IrrlichtML-1.7.1-win32Linux这样的目录。在这个目录下有contribute-codes文件夹,irrlicht-1.7.1文件夹,patch文件夹,change.txt,license.txt,LicenseUTF8-JP.txt,Readme.txt,Readme_jp_UTF8.txt文件。windows vs2008环境下有用的是irrlicht-1.7.1文件夹和Readme.txt文件。把irrlicht-1.7.1\include目录下的文件全部拷贝到irrlicht-1.7.1\对应的include目录下,提示有同名,覆盖即可。把irrlicht-1.7.1\source\Irrlicht目录下的.cpp和.h文件全部拷贝到irrlicht-1.7.1对应的源文件目录下,提示同名,覆盖即可。
3 编译irrlicht。用vs2008打开irrlicht-1.7.1\source\Irrlicht目录下的irrlicht9.0.vcproj文件。然后配置项目。重要设置头文件目录和库文件目录。打开顺序依次是“工具”->“选项”->“项目和解决方案”->“vc++目录”。然后设置头文件目录和库文件目录。包含文件主要有freetype头文件目录,就是我们上面编译freetype-2.4.8的头文件目录,另外还有directX SDK的头文件目录。关于directX SDK,提醒大家这个directX SDK是从晚上下的那个500M左右的包,不是那个100M左右的包。在下就犯了这样的错误。
然后选择项目,右键“重新生成”,可能会出现大量的如下警告提示:
Keycodes.h:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。这样的警告你大可以不管,如果你感觉看见这些警告太烦的话,把这个文件拷出来,用ultraedit打开,依次点击“文件”->“转换”->“ASCII到Unicode”,然后保存,把保存以后的文件再拷回到原来目录,现在可以发现这个文件变大了。大概是*2的样子。再重新生成,警告大量减少。剩下的几个大可以忽略不计。除了警告一般还会有几个error,我的就是还有7个error和5个警告。先看error。我的error基本都是和格式转换有关的,google了两天。才知道这就是编码的问题。然后找解决方法。我的方法如下:(不保证通用)
选择项目,右键点击,依次选择“属性”->“配置属性”->“常规”->“项目默认值”->“字符集”。点击下三角选择“试用unicode字符集”。然后“确定”->“重新生成”。还有d3d8x相关的几个文件找不到。解决方法是:
在vs2008环境里打开IrrCompileConfig.h文件,大概在120行,#define _IRR_COMPILE_WITH_DIRECT3D_8_,把这一行注释掉,我们不用directX8,在这行下面大概4行或者5行的地方有这样一行:#define _IRR_COMPILE_WITH_OPENGL_。在windows下我使用的是directX9,所以这一行也可以注释。如果你用的是opengl,那这一行就别注释啦。然后继续“重新生成”
.我的到这里就可以产生irrlicht.dll库啦。到irrlicht-1.7.1\bin\Win32-VisualStudio目录下查看irrlicht.dll时间是不是最近生成的。

现在假设我们这个库已经生成了,继续。。。
4 我接下来的工作是用01.HelloWorld这个工程进行的修改。本来想附上我的工程。工程太大,只把源文件上传 01.HelloWorld.rar   解压缩有4个文件,都添加到工程,可以用压缩包里的main文件替代01helloworld工程里的main文件,再把其他3个文件添加到工程编译即可。产生的新的可执行文件在irrlicht-1.7.1\bin\Win32-VisualStudio下面,我们上面把freetype.dll也拷贝到这个目录。就可以直接双击执行。首先显示如下: 1.jpg   ,输入“b”,弹出下面界面: 2.jpg  ,用鼠标左击“sinhei”,显示如下:  3.jpg   其中第三幅图还可以输入中文。
5 接下来就没有了。希望对大家有所帮助。另外,我的例子是参考中文补丁利得例子修改的。





阅读(4305) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~