修改cocos2d-2.0-x-2.0.3支持c++11 iOS Android

Cool.Cat 2014-06-19 2093

cocos2d-x 3.0后支持c++11,但是如果筒子们还在使用老版本而且又想使用便捷的c11怎么办呢?
1、升级到cocos2d-x 3.0以后版本;
2、修改老版本使之支持c11编译;
方案1就不说啦,说说方案2吧~
【Windows】
vs2010对c11支持不太完善,最新的vs2013基本上是没问题了,那就安装之~;
【iOS】
首先XCode5.11打开cocos2dx项目,Targets => Build Settings-Apple LLVM 5.1 Language C++
修改C++ Language Dialect为C++11 [-std=c++11]
修改C++ Standard Library为libc++(LLVM C++ standard library with C++11 support)

123


如果还依赖了其他第三方库,需要修改为相同设置,然后清理项目并全部重新编译,会发现cocos2dx编译时出现2个错误:
Canot initialize a parameter of type 'NSLineBreakMode' with an rvalue of type 'UILineBreakMode'
Canot initialize a parameter of type 'NSTextAlignment' with an rvalue of type 'UITextAlignment'

456


 
修改就很简单了,找到以下地方:

        // normal fonts
        if( [font isKindOfClass:[UIFont class] ] )
        {
            [str drawInRect:CGRectMake(0, startH, dim.width, dim.height) withFont:font lineBreakMode:(UILineBreakMode)UILineBreakModeMiddleTruncation alignment:align];
        }
        else // ZFont class 
        {
            [FontLabelStringDrawingHelper drawInRect:str rect:CGRectMake(0, startH, dim.width, dim.height) withZFont:font lineBreakMode:(UILineBreakMode)UILineBreakModeMiddleTruncation alignment:align];
        }

修改为:

        // normal fonts
        if( [font isKindOfClass:[UIFont class] ] )
        {
            [str drawInRect:CGRectMake(0, startH, dim.width, dim.height) withFont:font lineBreakMode:(NSLineBreakMode)UILineBreakModeMiddleTruncation alignment:(NSTextAlignment)align];
        }
        else // ZFont class 
        {
            [FontLabelStringDrawingHelper drawInRect:str rect:CGRectMake(0, startH, dim.width, dim.height) withZFont:font lineBreakMode:(UILineBreakMode)UILineBreakModeMiddleTruncation alignment:align];
        }

再编译就哦了!

最新回复 (0)
返回
发新帖
X