配置irrlicht的源码编译
来源:互联网 发布:mac下载的文件在哪里 编辑:程序博客网 时间:2024/06/05 23:59
公司要用irrlicht的引擎,学了一些时间,基本上会用其添加游戏场景了,但是由于采用的是irrlicht.lib库编译方式,运行时需要irrlicht.dll支持,而且重要的是看不到引擎的实现,为应用程序的编写和调式带来诸多不便,于是花了几个小时配置下源码irrlicht的编译方式。下面是一个大致的过程。
1,拷贝%/irrlicht_1.5/source到当前工作目录%/work。可以看到source下有个source.txt说明irrlicht enqine的配置以及其在linux下编译方法,和一个irrlicht的文件夹,其中保存着所有irrlicht引擎的实现源码。
2,在%/irrlicht目录下创建一个空的console工程。
3,然后在工程中建一个filer叫做irr,并将irrlicht下的所有.cxx和.hxx导入到该filer下面。然后编译,发现有n多.h文件都无法找到,这些文件大都是I开头的表示Irrlicht中的interface。他们都在%/irrlicht_1.5/include下面,也就是采用dll库的时候需要在工程配置中引入的那部分include文件。
4,现在把%/irrlicht_1.5/include下面的.hxx文件统统拷贝到irrlicht下,然后在工程中建一个叫做inculde的filer,并将刚刚拷贝过来的所有文件导入到filer下。然后编译。
5,此时仍然编译不通过,原因是找不到DirectX相关的头文件。将DirectX配置好,然后编译。
6,仍然不通过,提示zlib.h文件找不到,但是在irrlicht目录下发现有zlib的文件夹,于是建其中所有.cxx和.hxx导入到一个新建的zlib的filer下面,并且修改include设置,将../zlib的配置填入,再次编译。
7,发现有这样的错误error C2491: 'irr::createDeviceEx' : definition of dllimport function not allowed。找到 createDeviceEx的定义,研究了半天,发现该函数是为了导出dll而设计的,那么只需要将其定义前面的宏IRRLICHT_API改为空定义,编译。
8,ok,编译基本上通过了,但是连接的问题又来了,出了一大堆符号找不到,观察都是png开头和jpeg开头的一些符号。发现irrlicht目录下还有两个文件夹:libpng和jpeglib,他们应该就是定义这些找不到的符号的。于是将这两个目录下的所有.cxx和.hxx分别导入到png和jpeg的两个filer下,编译。
9,然后又来了一堆语法错误,来自jemedos.c和jmemmc.c,他们应该是跟平台相关的文件,没什么用,直接从工程剔除,编译。
10,ok,已经只剩很少的连接错误了,34个,轻松多了:)。这些链接错误都是因为重复定义,其实ligpng和jpeglib下的许多文件都是为了代码测试用的,有很多的main函数,把这些文件统统从工程剔除,再次编译。
11,终于剩三个连接错误:joyGetDevCapsA,joyGetPosEx,joyGetNumDevs。网上搜一把,这些都是关于游戏手柄的,在winmm.lib实现。
12,现在,剩下的就只差一个main函数了。那么把irrlicht的example01的main.cpp拷过来,
去掉irrlicht.lib导入的语句,编译,运行。
13,好了,采用全部源码的irrlicht就跑起来了。然后就可以轻松地研究irrlicht的结构和设计思路了。
Note:
1,如果出现d3d8.h找不到的问题,要在complierconfig.h中去掉宏开关_IRR_COMPILE_WITH_DIRECT3D_8_,以确保仅仅使用DirectX9。
2,如果出现IParticleAffector.h和irrTypes.h文件找不到的问题,请将这两个文件的include语句中的<>改为“”。
3,如果出现LoadLibarary()函数不认识Unicode的问题,请将_UNICODE和UNICODE编译开关去掉。
- 配置irrlicht的源码编译
- vs2010编译irrlicht源码
- irrlicht 在 mac上编译出错的解决办法
- Irrlicht+vc++6.0配置
- 我的Irrlicht学习笔记1——环境配置
- MySQL的源码编译与配置
- irrlicht引擎源码剖析 - IrrlichtDevice
- Irrlicht源码解析(一)
- irrlicht引擎源码剖析 - IrrlichtDevice
- Irrlicht 源码学习笔记 开篇
- Irrlicht 源码 学习笔记 【IUnknown】
- Irrlicht 源码学习笔记 【vector3d】
- FBReaderJ源码编译配置
- Irrlicht的纹理管理
- irrlicht的显示原理
- 鬼火(irrlicht)的复燃
- irrlicht
- 【Irrlicht鬼火引擎】 安装配置Irrlicht鬼火引擎
- linux 必须掌握的60个命令
- 认识 WORD 中的对话框(Dialog) (VBA)
- 服务没有及时响应启动或控制请求
- 修改 WORD 命令 (VBA)
- Box of Brick
- 配置irrlicht的源码编译
- 08年11月份北大高级语言程序(c)上机源码
- 返回所选(当前)段落指定行号的文本内容一(VBA)
- 磁盘配额
- 在windows下安装pyLint,对python进行语法检查
- 自定义的InputBox函数(C#)
- ldr和adr在使用标号表达式作为操作数的区别
- 动态加载JS脚本的4种方法
- String.split()用法的一点经验