由小白到大大的涅盘,从vgsky.com开始!

PSP开发教程00 libnge介绍

Update:2007/10/6,Click:0 本文如有下载 请从下面附件中下载

举手之劳 是您对我们最大的支持 感谢您!

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

nge是 nge's not a game engine.的递归缩写.它采用改进了图形系统的sdl.所有代码遵循GPL发布.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

众所周知,写psp程序时调试是一大难题,可能你写好一个程序之后,放到psp上调试,结果需要做这些工作:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

1 打开psp的usb连接.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

2 拷贝写好的程序到game下.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

3 运行程序,查看结果.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

这个可能是最好情况,可能你不小心写出程序了,psp挂了,结果还要关机拔电池等等,极大的浪费了开发人员的宝贵时间.可能绝大多数时间浪费在这个无聊的psp调试方面了.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

基于这个原因,所以需要一个与平台无关的库,这样在windows下开发程序就可以了.开发人员不需要在psp下调试,甚至可以连psp都不用买,一样可以开发psp程序.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

1 为什么nge采用SDL?

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

  sdl是一个非常出色的框架,而且是跨平台,nge采用了除图形显示的其他部分.原因是sdl显示是软件加速,而且放大,缩小,旋转,也是用的sdl_gfx做的软件加速.完全不能达到做游戏的需求.所以需要改写一个接口能够实现硬件加速的放大,缩小,旋转.此外可能有的开发人员会考虑sdl+opengl的方式,的确这个对图象旋转等能够实现硬件加速,不过还是不够快.以下是一个在psp上的对比:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

(1) 512*512*32 贴图 psp采用默认222mhz

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

sdl+softrender <30fps

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

sdl+pspgl   约55fsp 

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

sdl+nge    >270fps

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

(2)512*512*16贴图 psp采用默认222mhz

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

sdl+softrender <60fps

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

sdl+pspgl   约120fsp 

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

sdl+nge    >400fps

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

所以用pspgl可以满足一般应用程序的要求,但是如果需要复杂的显示,比如更多画面特效,用它就不太适合了.采用sdl+nge就基本能满足开发游戏的要求.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

2 nge的设计.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

  nge主要是替换sdl的显示系统,在windows下采用opengl实现,在psp下直接采用gu实现,这样达到最大的显示效率.提供一套一致的接口,这样一份代码可以在windows和psp下都可以运行,不用做任何的修改.开发人员在windows下开发并且调试,最后只需在发布的时候编译一份psp版的发布就行了,可以完全抛弃psp.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

3 nge的特点.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

  完全延续sdl的所有东西:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

   1各种图片格式支持,png,jpg,bmp,gif,tga...

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

                                                2 sdl的消息队列,这个对习惯消息机制开发者有很大用处.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

   3多线程程序,mutex,condition...

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

   4输入输出

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

   5更强大的SDL_BlitSurface函数功能,采用RendQuad函数名,可以在这个函数里实现旋转,放大,缩小,变换颜色,半透明效果.非常方便.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

   6完美的中文freetype支持.并且字的实时旋转,放大,缩小非常简单.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

  另外新加的部分

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

                                                7 网络子系统 简单的异步网络,可以通过这个库编写psp网络程序,例如邮件收发,ftp下载等等.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

   8 gui系统OCCULT,一个类似java的gui系统,采用xml作为配置文件,文档地址:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

     http://www.zgnongyi.com/jackstop/Occult%20API%20Documentation.mht

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

   9 小型sql数据库,可以用于配置和大量数据的管理,非常方便

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

4  最新一键安装包,包含了用于psp和windows的所有最新库,真正做到一键安装,无须配置.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

下载地址:一共4个包,共40m,解压之后运行setup.exe即可.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

http://code.google.com/p/topoc/downloads/list

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

windows版的设置:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

下载了windows版的会有下面几个目录:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

配置vc++ 6.0

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

1 库的头文件设置,请看图

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

 

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

2 lib文件设置,请看图

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

3 设置好了就可以进入demo目录用vc打开工程测试环境了,如果demo编译没问题的话说明windows下配置好了(把dll目录里的dll拷到system32下).

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

4 新建工程需要注意2个问题:由于是采用的多线程的库,所以新建工程需要注意2个地方的设置,一是需要用Multithreaded dll ,二是不用libcd,/nodefaultlib:"libcd.lib", 具体设置请看本节最后.(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

psp版的配置:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

采用整合包的可以直接启动start编译即可.(请看教程04)下面可以不用看了.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

1 请在ps2dev上下载并安装sdl,sdl_ttf,freeype,sdl_image,sdl_mixer,jpeg,libpng,zlib.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

2 将libnge_psp拷贝到任意目录,然后cd进入test.cpp所在目录,键入make SCEkxploit,如果没有错误说明libnge_psp已经装好了.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

 

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

开发实例:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

中国象棋pspv1.2采用的就是nge制作,在画面上有了很大的提高,而且整个制作过程中没有使用过一次psp,全部是在windows下完成的,只是在最后发布时编译了一份psp版程序.所以能够极大的加快开发进程和降低调试难度.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

-----------------vc编译时问题的解答-------------------

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

Q&A:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

Q1.出现linkerror

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

msvcrt.lib(MSVCRT.dll) : error LNK2005: _exit already defined in LIBCD.lib(crt0dat.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
msvcrt.lib(MSVCRT.dll) : error LNK2005: _strncpy already defined in LIBCD.lib(strncpy.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
msvcrt.lib(MSVCRT.dll) : error LNK2005: _fclose already defined in LIBCD.lib(fclose.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
msvcrt.lib(MSVCRT.dll) : error LNK2005: __isctype already defined in LIBCD.lib(isctype.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
LIBCD.lib(crt0init.obj) : warning LNK4098: defaultlib "msvcrt.lib" conflicts with use of other libs; use /NODEFAULTLIB:library...

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

A1.这个是用多线成的libc的问题,解决方法采用Multithreaded dll即可,如下图设置:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

 

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

Q2:出现错误

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

--------------------Configuration: text - Win32 Debug--------------------(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
Linking...(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(strcat.obj) : error LNK2005: _strcpy already defined in MSVCRT.lib(MSVCRT.dll)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(dbgheap.obj) : error LNK2005: _malloc already defined in MSVCRT.lib(MSVCRT.dll)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(dbgheap.obj) : error LNK2005: _realloc already defined in MSVCRT.lib(MSVCRT.dll)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRT.lib(MSVCRT.dll)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(crt0dat.obj) : error LNK2005: __exit already defined in MSVCRT.lib(MSVCRT.dll)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRT.lib(crtexe.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRT.lib(cinitexe.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRT.lib(cinitexe.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRT.lib(cinitexe.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in MSVCRT.lib(cinitexe.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
libcd.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRT.lib(MSVCRT.dll)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
MSVCRT.lib(MSVCRT.dll) : error LNK2005: _strncpy already defined in libcd.lib(strncpy.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
MSVCRT.lib(MSVCRT.dll) : error LNK2005: _fclose already defined in libcd.lib(fclose.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
MSVCRT.lib(MSVCRT.dll) : error LNK2005: __isctype already defined in libcd.lib(isctype.obj)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs; use /NODEFAULTLIB:library(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
MSVCRT.lib(cinitexe.obj) : warning LNK4098: defaultlib "libcd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
Debug/text.exe : fatal error LNK1169: one or more multiply defined symbols found(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
执行 link.exe 时出错.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

text.exe - 1 error(s), 0 warning(s)

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

A2:解决方法:加入/nodefaultlib:"libcd.lib"                     如图所示

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

 

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

 

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
这2个问题是vc下写多线程都会遇到的,原因请baidu,google,我就不废话了.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

Q3: 如何去掉psp版的debug信息?(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
psp默认是debug版的,标明有当前fps和内存剩余量,主要是方便检测速度和内存泄露问题,如果经过一个操作你内存不断变少,说明有内存问题,则需要修改.(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
A3:编译release版的nge.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

你用-D RELEASE 编译release版的libnge,cd 进入pspdev\libnge_psp\src 修改makefile,makefile修改的地方见红字

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

TARGET_LIB = libnge.a(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
OBJS = vram.o GuSystem.o libnge.o libnge_global.o

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

INCDIR = /usr/local/pspdev/psp/include/freetype2 /usr/local/pspdev/psp/include(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
CFLAGS = -G0 -w -DRELEASE(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
CXXFLAGS = $(CFLAGS) -fno-rtti(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
ASFLAGS = $(CFLAGS)

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

PSPSDK=$(shell psp-config --pspsdk-path)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
PSPBIN = $(PSPSDK)/../bin(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
CFLAGS += $(shell $(PSPBIN)/sdl-config --cflags)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
LIBS += $(shell $(PSPBIN)/sdl-config --libs)(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
include $(PSPSDK)/lib/build.mak(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
install:(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
cp libnge.a ../lib/(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
cp *.h ../include/

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

然后(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
make clean(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
make(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
make install(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
就可以了生成release的libnge.a

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

 

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

--------------------------------------------

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

Q3: VS2005如何使用?

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

A3:需要改一下工程设置.以下是步骤:

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

1 打开xxxx.dsw会出现一个对话框,问你是否转换旧工程,选择 是.编译时出现那个DataCache重复定义问题可以把那个定义删除或者改个名字,那个定义没有用到.设置参考vc6.0 设置inlcude和lib

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

编译会,出下边的问题(f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
错误 1 error C2365: “CacheData”: 重定义;以前的定义是“枚举数” e:\zxp\c++\libnge_win\libnge\include\datatype.h 121 (f2{jki})C<Vu^|!k:YkFv[U.*n>{EB+zlfTc!cxziP-=k^&#l:&>v!'ySff+B4h本文来自:V电G玩S天K空Y
错误 2 error C2143: 语法错误 : 缺少“;”(在“*”的前面) libnge_win\libnge\include\datatype.h 127 错误 3 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int libnge_win\libnge\include\datatype.h 127
请将CacheData重新改个名字即可,或者删除他

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

2 设置include和lib

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

参照vc6的方式设置那5个include和lib(“工具->选项->项目和解决方案->VC++目录”里设置库文件Include和Lib路径;")

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

3 更改工程属性,选择linker,加入需要的库文件,可以用哪些添加哪些(例如sdl_ttf.lib 是lesson2才要的),如下图,我的是万恶的中文版的vs2005.

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

附加依赖项 sdl_ttf.lib SDLmain.lib sdl.lib sdl_image.lib libnge.lib opengl.lib glu.lib msvcprtd.lib msvcrtd.lib

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

忽略所有默认库  选择 是

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

 

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

3编译即可.注:vs2005可能会需要opengl.dll请在这里下载(vc6会安装这个dll所以不用下,vs2005安装的是opengl32.dll)http://code.google.com/p/topoc/downloads/list5 以后自建工程需要选择console,然后工程设置按第3步即可

+-y))~(l?#'voGkbs+U!SVzNmLPSwiyuR59ud!Q5ffX{(xc8>>ACp3%OzorKsP5lu#]_V&}r89I`RX3>lJZYzNhWa-本文来自:V电G玩S天K空Y

【分类导航】

【热门游戏资讯】

更多

【推荐游戏资讯】

更多

【最新资讯更新】

更多

【赞助商链接】