您的位置:首页 > 产品设计 > UI/UE

我的游戏开发第一步:搞定CEGUI遇到问题的解决方法

2012-02-21 11:14 281 查看
by zxy,Java/C++编程交流群:168424095
1.svn 璁よ瘉澶辫触,璁よ愈澶辫触以UTF-8编码是认锺失败,可能是认证失败。

(1)svn上如果出现此错误,有两种解决方式,一个是把Author这个配置文件写好,另一个是把svnserve.conf文件中的#authz-db = authz这个去掉,这个注释掉的意思是不再去读取AUTHOR文件里的信息。

(2)修改Windows2003的登录密码,svn的默认密码需要重新填写。打开svn 设置->已保存数据 清除 已认证数据。再重新登录,输入正确的用户名密码就可以了。

(3)网上说一个是权限问题,还一个是路径问题。TSVN在提交的时候区分大小写的。但是我CHECK OUT的时候是以小写的路径CHECK OUT的。

(4)文件编码。将authz文件的编码改为UTF-8 without BOM,中文名叫UTF-8无BOM即可解。修改后果然一切正常!能够修改文件编码成UTF-8无BOM的工具有Ultra Edit和NotePad++。



2.使用VS2003进行Symbian开发,编译时报错:error PRJ0019:工具从 "正在执行预生成事件"。

这只是个非常general的错误提示,应该从Output窗口里查看该提示上方的具体的错误提示。

3.VS中如何显示代码的行号

工具 - 选项 - 文本编辑器,选择对应的语言然后把行号勾上。

4.CEGUI SDK中如何产生解决方案。(以VS2005为例)

在CEGUI SDK里makefiles目录下面有个premake子目录,里面有build_vs2005.bat批处理文件。双击执行这个批处理。就会在相同目录里产生CEGUI.sln的工程文件,他就是们需要的VS2005的解决方案文件。同理执行build_samples_vs2005.bat,可以产生CEGUISamples.sln。这是CEGUI例子的解决方案文件。

5.CEGUI build_samples_vs2003.bat 错误

target vs2003 samples.lua:7: could not load package 'helpers.lua' from path ';;C:\Program Files\Lua\5.1\lua\?.luac'

解决办法:

1、

打开samples.lua将里面

require("helpers.lua")

require("config.lua")

改为:

require("helpers")

require("config")

2、

打开samples.lua将里面

require("helpers.lua")

require("config.lua")

改为:

dofile("helpers.lua")

dofile("config.lua")

原因:是require的匹配机制导致的,它与dofile的匹配机制不一样。

具体请参考:lua中的require机制

lua中的require机制为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来。

1、require机制相关的数据和函数package.path:保存加载外部模块(lua中"模块"和"文件"这两个概念的分界比较含糊,因为这个值在不同的时刻会扮演不同的角色)的搜索路径,这种路径是"模板式的路径",它里面会包含可替代符号"?",这个符号会被替换,然后lua查找这个文件是否存在,如果存在就会调用其中特定的接口。

典型的值为: "./?.lua;./?.lc;/usr/local/?/init.lua" 如果lua代码中调用:require("hello.world") 那么lua会依次查找: ./hello/world.lua ==>这里"hello.world"变成了"hello/world",并替换了模型"./?.lua" ./hello/world.lc .....(这种处理方式和python类似,只不过不需要__init__.py,也有调用python中的__init__.py) package.path在虚拟机启动的时候设置,如果存在环境变量LUA_PATH,那么就用该环境变量作为它的值,并把这个环境变量中的";;"替换为luaconf.h中定义的默认值,如果不存在该变量就直接使用
luaconf.h定义的默认值 package.cpath:作用和packag.path一样,但它是用于加载第三方c库的。它的初始值可以通过环境变量 LUA_CPATH来设置 package.loadlib(libname, func):相当与手工打开c库libname, 并导出函数func返回,loadlib其实是ll_loadlib

2.require的处理流程: require(modelname) require(在lua中它是ll_require函数)的查找顺序如下:

a.首先在package.loaded查找modelname,如果该模块已经存在,就直接返回它的值

b.在package.preload查找modelname, 如果preload存在,那么就把它作为loader,调用loader(L)

c.根据package.path的模式查找lua库modelname,这个库是通过module函数定义的,对于顶层的lua库,文件名和库名是一样的而且不需要调用显式地在lua文件中调用module函数(在ll_require函数中可以看到处理方式),也就是说lua会根据lua文件直接完成一个loader的初始化过程。

d.根据package.cpath查找c库,这个库是符合lua的一些规范的(export具有一定特征的函数接口),lua先已动态的方式加载该c库,然后在库中查找并调用相应名字的接口,例如:luaopen_hello_world e.已第一个"."为分割,将模块名划分为:(main, sub)的形式,根据package.cpath查找main,如果存在,就加载该库并查询相应的接口:luaopen_main_sub,例如:先查找 hello库,并查询luaopen_hello_world接口 f.得到loder后,用modname作为唯一的参数调用该loader函数。当然参数是通过lua的栈传递的,所以loader的原型必须符合lua的规范:int
LUA_FUNC(lua_State *L) ll_require会将这个loader的返回值符给package.loaded[modelname],如果loader不返回值同时package.loaded[modelname]不存在时, ll_require就会把package.loaded[modelname]设为true。最后ll_reuqire把package.loaded [modelname]返回给调用者。

3.module的处理流程module(name, cb1, cb2, ...)

a.如果package.loaded[name]是一个table,那么就把这个table作为一个mod

b.如果全局变量name是一个table,就把这个全局变量作为一个mod

c.创建table:t = {[name]=package.loaded[name], ["_NAME"]=name, ["_M"]=t, ["_PACKAGE"]=*name*(删除了最后的".XXXX"部分)}. 如果name是一个以点分割的串,那么得到的mod类似这个样子: hello.world==> {["hello"]={["world"]={XXXXXXX}}}

d.依次调用cbs: cb1(mod), cb2(mod),...

e.将当前模块的环境设置为mod,同时把package.loaded[name] = mod。

6.DefaultResourceProvider::load-TaharezLook.scheme does not exit!

属性 - 配置属性 - 调试 - 工作目录设置为$(OutDir)

7.FontManager::createFont - A font named 'Commonwealth-10' already exists

What you can try is open the TaharezLook.scheme file and remove the line which loads that font. Some samples also manually load that same font indeed, which causes an exception.I commented out the call to createFont() in each of the samples, and they now
run beautifully.

Here's the line that I commented out:

FontManager::getSingleton().createFont("Commonwealth-10.font");

8.A WindowFactory object, an alias, or mapping for 'WindowsLook/StaticImage' Window objects is not registered with the system.

9.ExpatParser::parseXMLFile - XML Parsing error 'not well-formed (incalid token)' at line 3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐