Cocos2d-x项目移植WP8填坑备忘

1.移植之前如果你的源文件中有中文,在vs 2012中编译可能会出现许多莫名其妙的错误,诸如类型未定义、变量未定义 warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss 之类的问题,但是在编辑器中是正常的。


解决方法,选中有问题的文件,File->Advanced Saved Options…对话框中选择 Unicode – Codepage 1200,或者 Unicode (UTF-8 with signature) – Codepage 65001 保存,建议优先尝试后者。


2.在将Eclipse(Linux上的开发环境,非Windows)和XCode上做好的代码移植到Windows+Visual Studio的时候,我发现我的代码中(甚至是注释中)的中文字符会导致无法编译,错误信息很奇怪的,比如告诉你哪个位置少了分号,某个变量缺少类型之类的根本不存在的错误。

这个问题是因为在Xcode里面默认的utf-8都是默认不带签名的,在vs上需要单独把这个.h  .cpp文件转换为Unicode (UTF-8 with signature) – Codepage 65001

还有文章提供的方法:

文件中尽量少出现中文符号(如果从头开始就是在VS上写代码不知道是不是会有这样的问题,移植的代码,问题会更多)。同时也为了国际化,我们可以把游戏中需要出现的文案抽取出来,可以参考Android的方式来做国际化,将中文放到配置文件上(配置文件编码确保和CCLabelBMFont所使用的fnt文件的编码相同,一般使用Unicode (UTF-8 without signature) – Codepage 65001 编码)。这样配置文件不参与编译,就可以避免编译期间中文编码扰乱编译过程这个问题。


3.关于导入Classes目录中的子目录

在xcode创建的目录和.h,.cpp文件等,在vs里面并不会自动引入工程,所以如果新建了文件,在vs上面就一个一个建立Filter,然后往Filter中添加文件吧.


4.错误信息: *error C2440: ‘type cast’ : cannot convert from ‘void (__cdecl XXXX::* )(void)’ to ‘cocos2d::SEL_MenuHandler’*

解决方法,可能是函数原型不对,看看菜单的回调函数原型是不是这样的(检查一下是不是你少了参数?):


5.提示资源文件找不到?选中问题资源,点属性,然后把 Content 属性设置为true即可。

声音文件使用wav资源。不要使用mp3文件。mp3文件会崩溃


6.关于CCLOG日志无输出的问题:

在Android中,要在Android.mk文件中添加以下编译选项: APP_CPPFLAGS := -DCOCOS2D_DEBUG=1

在VC++中的编译器不是gcc,而应该在Visual Studio设置: Your Project -> Settings -> Configuration Properties -> C/C++ -> Command Line -> Additional Options 输入框中添加定义: /D “COCOS2D_DEBUG=1″,重新编译即可。当你决定发布Release版本的时候,请把这个去掉。


7.在使用ccbi文件的时候,声明类的继承的时候最好的顺序是把cclayer写前面

class SmithyFusionLayer: public CCLayer
, public CCBMemberVariableAssigner
, public CCNodeLoaderListener
, public CCBSelectorResolver

这此碰到了个奇葩的问题就是继承的顺序反了,但是xcode和eclipse都是没问题的,vs则会打开界面崩溃。


在这些过程中,发现了一个很好的文章:Cocos2d-x项目移植到WP8小记

Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

Leave a Comment