这几天想玩一下cocos2dx3.9新版本的东西,但是公司电脑配置不够,开个vs2012都卡的不行,更别提高版本的了。因为cocos2dx-3.9中使用了好多c++11的规范,而vs2012有好多C++11规范不支持,所以生成解决方案失败。只需要修改一些代码的写法就可以了,C++11规范的写法只是新奇了一些,编译器不支持,换个写法我们照样可以实现。下面是代码的修改对比。

---------------------------------------------------------------------------------------------------------
第一处:
NavMeshTest.cpp中:
void NavMeshBaseTestDemo::createAgent(const Vec3 &pos)
{
...
AgentUserData *data = new AgentUserData{ 0.0f };
...
}

改成:

void NavMeshBaseTestDemo::createAgent(const Vec3 &pos)
{
...
AgentUserData *data = new AgentUserData; data->time = 0.0f;
...
}
--------------------------------------------------------------------------------------------------------
第二处:
DrawPrimitivesTest.cpp中:
PrimitivesCommandTest::PrimitivesCommandTest()
{
// draws a quad
V3F_C4B_T2F data[] = {
{{, ,}, {, , ,}, {,}},
{{, ,}, {, ,,}, {,}},
{{,,}, {,, ,}, {,}},
{{, ,}, {,,,}, {,}},
};
...
}

改成:

PrimitivesCommandTest::PrimitivesCommandTest()
{
V3F_C4B_T2F data[];
data[].vertices = Vec3(,,); data[].colors = Color4B(,,,);   data[].texCoords = Tex2F(,);
data[].vertices = Vec3(,,); data[].colors = Color4B(,,,);  data[].texCoords = Tex2F(,);
data[].vertices = Vec3(,,); data[].colors = Color4B(,,,);  data[].texCoords = Tex2F(,);
data[].vertices = Vec3(,,); data[].colors = Color4B(,,,); data[].texCoords = Tex2F(,); ...
}
上面两处修改中原来的版本用到了C++11中初始化列表(Initializer lists)的部分。这个构想是结构或是数组能够依据成员在该结构内定义的顺序通过给予的一串引数来产生。这些初始化列表是递归的,所以结构的数组或是包含其他结构的结构可以使用它们。这对静态列表或是仅是把结构初始化为某值而言相当有用。C++有构造函数,能够重复对象的初始化。但单单只有那样并不足以取代这项特色的所有机能。在C++03中,只允许在严格遵守POD的定义和限制条件的结构及类型上使用这项机能,非POD的类型不能使用,就连相当有用的STL容器std::vector也不行。C++11将会把初始化列表的概念绑到类型上,称作std::initializer_list。这允许构造函数或其他函数像参数般地使用初始化列表。因为初始化列表是真实类型,除了类型构造式之外还能够被用在其他地方。正规的函数能够使用初始化列表作为引数。vs2013及以上版本支持初始化列表功能,但是vs2012不支持。
 
--------------------------------------------------------------------------------------------------------
第三处:
ActionManagerTest.h中
class StopActionsByFlagsTest : public ActionManagerTest
{
... const unsigned int kMoveFlag = 0x01; const unsigned int kScaleFlag = 0x02; const unsigned int kRotateFlag = 0x04; const unsigned int kRepeatForeverFlag = 0x08;
};

改成:

 // 并将类成员的初始化放到构造函数初始化列表中
class StopActionsByFlagsTest : public ActionManagerTest
{
  StopActionsByFlagsTest::StopActionsByFlagsTest()
  : kMoveFlag(0x01)
   , kScaleFlag(0x02)
  , kRotateFlag(0x04)
  , kRepeatForeverFlag(0x08)
  {
  } ... const unsigned int kMoveFlag; const unsigned int kScaleFlag; const unsigned int kRotateFlag; const unsigned int kRepeatForeverFlag;
};
这里原来的版本用到了C++11中非静态成员初始化(Non-static data member initializers)的部分,在C++11标准中,类的非静态成员可以在类的定义中声明并直接初始化类的非静态成员初始化。vs2013中支持这个部分,但是vs2012不支持所以将初始化放到构造函数中。

用vs2012编译cocos2dx-3.9的更多相关文章

  1. vs2012编译cocos2dx 3.10报错解决方法

    新建的一个cocos工程没有改过任何代码直接编译居然报错了? 百度了一下原来是因为vs2012不支持c++11的部分特性 cocos2dx 3.10正好就用到了vs2012不支持的那部分特性,所以报错 ...

  2. 在Xcode 6 beta里编译Cocos2d-x iOS项目时失败

    转载 在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwr ...

  3. vs2012编译Qwt

    主题:vs2012编译Qwt ------------------------------------------------------------------------- 参照网络地址: htt ...

  4. VS2012 编译 Assimp

    VS2012 编译 Assimp 环境: assimp-3.1.1Windows 7 64BitVisual Studio 2012CMake 2.8.12.1 注意: 在Windows中编译assi ...

  5. 【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”

    原文网址:http://www.cnblogs.com/Dageking/archive/2013/05/15/3079394.html VS2012编译出来的程序,在XP上运行,出现“.exe 不是 ...

  6. <转>使用eclipse编译cocos2d-x示例项目,创建cocos2d-x android项目并部署到真机

    准备 今天将cocos2d-x的示例项目tests编译到android真机运行,以及如何创建cocos2d-x的android项目. 打开cocos2d-x的tests项目,路径为:D:\cocos2 ...

  7. VS2012编译Snmp++ v3.2.25

    VS2012编译Snmp++ v3.2.25跟用VC6/VC2010等编译方法区别不大. 网上和教程上盛传的方式是把snmp++的cpp源文件和头文件都加到工程里,再编译.我觉得添加所有头文件到工程里 ...

  8. xcode6编译cocos2dx项目出现Undefined symbols _fwrite$UNIX2003

    当xcode6编译cocos2dx的时候会出现Undefined symbols _fwrite$UNIX2003 这个问题.google了一篇文章:http://stackoverflow.com/ ...

  9. Mac上利用Eclipse编译Cocos2d-x

    目前使用较多的Cocos2d-x开发平台是XCode,应该是由于大部分Cocos2d-x开发者都是iOS开发出生.但是当我们将XCode开发的Cocos2d-x工程发布Android版本时,每次都需要 ...

  10. vs2012编译在win7 32位电脑和win xp电脑上运行的win32程序遇到的问题记录

    一.win7 32位电脑: vs2012编译的64位程序是没有问题的.但编译的32位程序在别的电脑(虚拟机模拟)出错: 感觉很无语,vs这么牛逼的东西,在设计时候都不考虑这些吗? 在自己电脑C:\Wi ...

随机推荐

  1. 制作MacOS 系统启动盘

    1,首先需要在一台有MacOS系统,在Apple stroe下载MacOS High Sierra安装程序: 2,准备一个至少8G容量的U盘: 3,打开 “应用程序 → 实用工具 → 磁盘工具”,将U ...

  2. LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)

    参考文档:http://blog.csdn.net/ioy84737634/article/details/44916241 目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.l ...

  3. spring-boot-jpa 自定义查询工具类

    1.pom文件中添加如下配置 <dependency> <groupId>org.springframework.boot</groupId> <artifa ...

  4. 一、动态网络编程的概念 二、Tomcat服务器搭建 三、Servlet组件介绍

    一.动态网络编程的概念 动态网页:结合了HTML以外的高级程序编程语言和数据库技术生成的页面. 动态网页编程技术: ASP,PHP,JSP HTTP协议:规范浏览器和服务器之间通信的数据格式. 浏览器 ...

  5. 遇见C++ Lambda

    转自:https://www.cnblogs.com/allenlooplee/archive/2012/07/03/2574119.html 遇见C++ Lambda Written by Alle ...

  6. Scala学习——Brief Scala Tutorial

    因为Spark项目需要,学习Scala编程. 从官网文档入手:http://www.scala-lang.org/documentation/ 首先从他的Older Documentation入手. ...

  7. amcharts属性

    Amcharts的特点包含: *动画或静态 *价值轴能够扭转 *线性或对数轴的价值尺度 *提前定义或定制的子弹 *定制描写叙述不论什么数据点 *点击栏目/酒吧(可用于钻孔下来图表) *梯度弥漫 *价值 ...

  8. 4518: [Sdoi2016]征途

    Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m天外,每一天晚上Pine都必须在休息站过夜 ...

  9. Python - 格式化字符串的用法

    0. 摘要 Python支持多种格式化字符串的方法,包括%-fromatting.str.format().f-strings三种,f-strings是Python3.6以后出现的一种新方法,相比其他 ...

  10. 利用MATLAB软件对数码相机进行检校

    分享资料:https://pan.baidu.com/s/1FQb-ttLJNJKlMzu-0RjBsw.内部包含张正友的经典论文等文献,官网的checkerboardPattern等.