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小记
版权属于:东哥笔记 - DongGe.me
本文链接:https://dongge.org/blog/254.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!