zoukankan      html  css  js  c++  java
  • cocos2d-x-2.2.0_win7+vs2010

    cocos2d-x-2.2.0_win7+vs2010搭建_eclipse+ndk-r9+cygwin搭建_教程以及编译问题汇总

    声明:我是才用c/c++和cocos2d-x的如果有错误欢迎指出

            文章内容我亲测过可以通过,同时我也会一直更新内容

            感谢那些把自己的东西分享出来的人

    原文地址:http://www.cnblogs.com/SadNight/p/3364994.html (欢迎转载,转载请保留此行) 

    cocos2d-x版本更新快,教程资料跟不上,最近需要用cocos2d-x找了好多资料才搞定,写在这里分享给需要的人

    这篇教程没有写出详细的步骤但会给出参考文章,如果我写的简略你看不懂可以看参考的原文,要注意的就是看原文的时候只看相应的部分就行了

    如果你在编译的过程中遇到了错误,请注意看文章最下面的错误汇总,如果没有的话请告诉我

    本教程需要下载:

      1.vs2010 简体中文  下载地址:http://download.microsoft.com/download/1/4/3/143B7583-6225-474F-88D5-5811FBC470FD/X16-57473VS2010ProTrialCHS.iso

      2.java jdk 1.6        下载地址:http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe

      3.android sdk    下载地址:http://developer.android.com/sdk/index.html  (请看下载注意android sdk)

      4.eclipse  4.3.1      下载地址:http://www.eclipse.org/downloads/

          5.adt 22.2.1           下载地址:https://dl.google.com/android/ADT-22.2.1.zip

          6.ndk r9                 下载地址:http://developer.android.com/tools/sdk/ndk/index.html

      7.cdt 8.2.1             下载地址:http://www.eclipse.org/cdt/downloads.php

          8.cocos2d-x  2.2.0 下载地址:http://www.cocoachina.com/bbs/read.php?tid=154886  (请看下载注意cocos2d-x)

      9.cocos2d-x  2.1.3 下载地址:https://cocos2d-x.googlecode.com/files/cocos2d-2.1rc0-x-2.1.3.zip

       10.cygwin           下载地址:http://baoku.360.cn/soft/show/appid/102350562 (请看下载注意cygwin)

         11.python 2.7.3      下载地址:http://www.python.org/getit/releases/2.7.3/

    下载注意:

      1.android sdk

        安装完 SDK Manager 下载SDk慢或者下不了的解决方法(建议先用了这个方法在去下载SDK)

        参考原文:http://blog.csdn.net/android_tutor/article/details/7425021

        (1)打开 C:WindowsSystem32driversetchosts 文件

              (2)在末尾添加一行 74.125.237.1       dl-ssl.google.com

          2.cocos2d-x

               这里我下载的是CocosStudio提供的cocos2d-x,在cocos2d-x2.0版本以后都有CocosStudio的集成了,你下载那个都行

               官方的最新版本貌似是用vs2012写的没有 cocos2d-win32.vc2010.sln

          3.cygwin

               我下过官方的但是在安装的时候一直读取不到下载网址,所以我用这个

    安装注意:

       1.安装路径不要有中文和空格,请把所有的路径都修改成只有 英文 数字 下划线 的路径

         2.android sdk 下载你需要的就行了 我只下载了2.2 和 2.3

         3.win7+vs2010搭建

            参考原文:http://blog.csdn.net/ccf19881030/article/details/9204801

            (1)自行安装vs2010

            (2)解压cocos2d-x 2.2.0到你想放的目录

            (3)运行cocos2d-x 2.2.0下的这个文件,然后你就可以编译运行什么的了

            (4)安装cocos2d-x vs的项目模版,这是创建项目的一种方法(如果你不用cocos2d-x的vs项目模版就不用这一步)

                   ①解压cocos2d-x 2.1.3

                   ②复制cocos2d-x 2.1.3 emplate目下的文件夹到cocos2d-x 2.2.0 emplate下

                   ③复制cocos2d-x 2.1.3目录下文件到cocos2d-x 2.2.0下

                   ④运行 

                   注意:

                      完成后到vs10 解决方案》添加》新建项目 看看是否有红色区域的部分

                      

                     如果你没有,那么用文本工具打开在最后面加一句pause(如下图)在运行

                     

                     如果你看到下图

                     

                     那么在运行中输入 regedit 进入注册表,把[HKEY_CLASSES_ROOT.js] 项下的那个默认值改成 "JSFile" 在次运行就好了

                     小提示:

                          Ⅰ通过这中方法建立的项目要把这个项目设置为启动项才行 项目右键》设置为启动项

                          Ⅱ下面红色框框内的东西是列子如果你不看可以 项目右键》移除 (不会删除只是不会在这里出现也不会编译,如果需要的话你可以 添加》现有项目 添加回来)

                             蓝色框框的是js 和 lua脚本的支持文件如果你不用也可以卸载,但是我推荐 项目右键》卸载项目

                             

                         Ⅲ右键解决方案》配置管理器可以管理你需要生成的项目,需要看的列子和库只需编译一次就行了,然后你可以取消他们的生成,只编译你的项目

               

               (5)安装Python(这是官方推荐的创建新项目的方法)
                        ①自行安装Python
                        ②把python.exe所在路径如C:Python27,配置到系统path环境变量中去
                        ③创建项目
                            ⅠD:   //切换盘符,因为我的Cocos2d-x源码在D盘,create_project.py在该目录下。
                            Ⅱcd D:cocos2dx_2.2.0 oolsproject-creator  //进入到create_project.py脚本所在目录
                            Ⅲ运行脚本,生成HelloWorld项目,命令为:python create_project.py -project HelloWorld -package com.cocos2dx.org -language cpp 
                               其中HelloWorld为工程名称,com.cocos2dx.org为我为android版本取的包标识名。
                               
                               然后在 D:cocos2dx_2.2.0projects 路径下可以找到你刚才新建的项目 目录如下图 
                               Classes是cocos2dx的代码文件夹    Resources是资源文件夹   proj.win32是win32的项目点击这个运行你的项目
                               
     
              (6)注意
                      在vs10中新加类的时候 不要用红色的那个添加类  用蓝色的那个  然后把路径选择到上图的Classes文件夹中
                      
     
          4.eclipse不需要安装解压到你想要的路径就行了

          5.安装eclipse的 cdt 和 adt 插件

              参考原文:http://www.cnblogs.com/ybgame/archive/2012/06/07/2540693.html

              (1)点击红色的

                      

              (2)点击 Add 在

                     在Name的地方输入 ADT 或者 CDT

                     点击Archive找到你下载的 adt 和 cdt 插件  然后点击 ok

                     

                     全选内容 然后下一步   等他完成以后  然后同意条款 下一步 等他装完 重启

                     

         6.安装cygwin

                 参考原文:http://www.cnblogs.com/lhming/archive/2012/06/27/2566460.html

                 cygwin的安装我就不写了原文给的很详细,注意只看“2、Cygwin安装”这一部分

                 要注意的是

                        我只找到了这几个 autoconf2.1、automake1.10、binutils、gcc-core、gdb、pcre、pcre-devel、gawk、make

                             这个几个没找到 gcc- , g++、gcc4-core、gcc4-g++(如果你找到了那么请告诉我下,我在这里先谢过了)

                             然后 gcc- , g++  不知道是不是原文的作者写错了 我只找到了一个 gcc-g++

                   然后把 D:cygwinin 配置到系统path环境变量中去

         7.把ndk r9解压到你想要的目录

         8.在eclipse中导入cocos2d-x的项目

               (1)在eclipse中导入 D:cocos2dx_2.2.0cocos2dxplatformandroidjava 项目

               (2)在eclipse中导入 D:cocos2dx_2.2.0projectsHelloWorldproj.android项目(Python建立的项目)

               (3)你的项目 右键属性  c/c++ Build》Environment  add  添加如  NDK_ROOT

                      参考原文:http://blog.163.com/sylar_lin/blog/static/192332093201312232155220/

                      

          9.在这个地方要添加你用到的.cpp文件,如果只有.h文件那么就写.h文件就行了

            

         10.到此应该是完成了,如果你还是运行不了请告诉我,我会不断的更新,

         11.请注意看你的控制台输出里面一般都有错误的报告

    参考文章:

          JDK1.6官方下载_JDK6官方下载地址  http://aben328.iteye.com/blog/341499/

          下载VS2010 http://shengtao8659.blog.163.com/blog/static/1132929422011313111415129/

    -------------------------------------------------------------遇到的问题总结(这个地方我会持续不断的更新)-------------------------------------------------

    Eclipse 遇到的问题

         报错:Program bash is not found in PATH (如果按照我的方法来的话是没有这个错误的,我之前用别的方法的时候有但是后来还是没解决,写出来放到这里做参考吧)

                 参考原文:http://blog.csdn.net/fuyongbing1986/article/details/11556149

                 方法:

                       1、把cygwin/bin加入系统环境变量Path下

                       2、右击工程-->properties-->C/C++ Build -->ToolChain Edit
                            确认右边视图的选项:Current toolchain:No Toolchain
                                                        Current Builder:Android Builder

         报错: 'byte' does not name a type

                 这个错误是因为你在.cpp/.h中使用 byte 这个类型,把他修改成int就ok了

    VS2010 遇到的问题

         报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

                参考原文:http://hi.baidu.com/sangwf/blog/item/72e2932b70fb5fffe7cd4098.html

                项目》属性》配置属性》清单工具》输入和输出》嵌入清单:原来是“是”,改成“否”

     
     

    编译器初始化全局变量,并分配虚拟内存

     

     版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
    http://www.cnblogs.com/lovers/p/memory.html 

     word版下载

    编译器初始化全局变量,并分配虚拟内存

    目录

    编译器初始化全局变量,并分配虚拟内存

    问题:

    解释:

    执行文件的大小

    什么时候初始化?

    什么时候分配内存?

    为什么程序开始运行时的内存是0.5MB而不是100MB?

    总结:

    实验:

    环境

    例程1 没有显示初始化

    例程2 显示初始化

    例程3 没有显示初始化,在main方法中使用全局变量

    例程4 显示初始化,在main方法中使用全局变量

    例程5 没有显示初始化,打印虚拟内存地址

    例程6 显示初始化,打印虚拟内存地址

    问题:

    全局变量arr占用100MB空间,arr存放在静态存储区,当程序运行的时候,占用的内存竟然只有几百KB,难道arr没有占用内存?

    解释:

    执行文件的大小

    例程1、2、3、4可以证明:

    数据段保存在目标文件中。

    BSS不保存在目标文件中(除了记录BSS段在运行时所需要的大小

    该结论引自《C专家编程》6.2节。

        

    执行文件的大小 = BSS段 + 数据段 + 文本段 + 其他。

     例程 

    执行文件大小

    例程1

    7376Byte = 7.2KB

    例程2

    140865010Byte = 134.3MB

    例程3

    7415Byte=7.2KB

    例程4

    140865045Byte = 134.3MB

    初始化

    执行文件大小

    没有显示初始化

    7376Byte = 7.2KB

    显示初始化

    140865010Byte = 134.3MB

     

    什么时候初始化?

    1. 1.       手动初始化

    编译时根据赋值进行初始化,存储在数据段

    1. 2.      默认初始化

    编译时初始化,只是记录其大小,存储在BSS

    BSS的值全是0,由此可见为什么默认初始化int是0,char是空了。对于内部类型和枚举默认初始化是0.

    什么时候分配内存?

    编译完,全局变量占用的空间就分配好了。

    编译器给arr[100 * 1024 * 1024]分配的虚拟内存:

    0x804a040

    …………

    0xe44a03f

    结合例程5例程6的结果可知,无论是否显示初始化,编译后全局变量的内存都分配好了,都是虚拟内存

    为什么程序开始运行时的内存是0.5MB而不是100MB?

    例程

    是否使用全局变量arr

    进程占用内存

    例程1

    不使用

    0.5MB

    例程2

    0.5MB

    例程3

    main方法中使用全局变量arr

    memset(arr,1,100*1024*1024)

    100.85MB

    例程4

    100.85MB

    TODO:下面的论述都是跟同学讨论,上网查找的结果,没有经过权威验证

    关于虚拟内存管理请查看:Linux C编程一站式学习----虚拟内存管理

    程序开始运行时,并不会真的把静态存储区全部载入实际内存,只把一部分虚拟内存映射到了实际内存,所以没有访问全局变量arr的时候,进程实际占用内存只有几百KB。当访问全局变量的时候,操作系统才会把这一部分虚拟内存地址映射到实际内存,进程实际占用内存才会到达100多MB。

    也就是说编译器给全局变量分配的虚拟内存,而我们看到的进程占用的实际内存

    总结:

    根据实验可知,全局变量确实是在编译时,初始化和分配虚拟内存。只不过一些实现细节对我们透明了。纸上得来终觉浅,绝知此事要躬行。

    实验:

    环境

    FC18

    GCC

    例程1 没有显示初始化

    源码:

    #include <unistd.h>

    char arr[100 *1024 *1024];//声明了100MB空间,没有显示初始化

    intmain(intargc,char*argv[])

    {

      while(1)

      {

        sleep(1);

      }

      return0;

    }

    汇编:

        .file  "test_uninitialized.cpp"

        .globlarr

        .bss          #未初始化

        .align 32

        .type  arr, @object

        .size  arr, 104857600

    arr:

        .zero  104857600

        .text

        .globlmain

        .type  main, @function

    main:

    ..............

    结果:

        

     

     

    运行时占用的内存:

      

    内存总共大小:508740KB /1024 = 497MB 约为 512MB

    进程占用内存:508740KB * 0.001 = 508.74KB /1024 = 0.5MB

    分析:

    test_uni的大小为7376字节。

    bss段是未初始化的全局变量存储区。100 * 1024 * 1024 = 104857600字节。

    例程2 显示初始化

    源码:

    #include <unistd.h>

    char arr[100 *1024 *1024]={'a'};//显示初始化

    int main(int argc,char*argv[])

    {

      while(1)

      {

        sleep(1);

      }

      return0;

    }

    汇编:

             .file  "test_initialized.cpp"

        .globlarr

        .data         #需要初始化

        .align 32

        .type  arr, @object

        .size  arr104857600

    arr:

        .byte  97

        .zero  104857599

        .text

        .globlmain

        .type  main, @function

    main:

    ..............

    结果:

     

     

    运行时占用的内存:

    内存总共大小:508740KB /1024 = 497MB 约为 512MB

    进程占用内存:508740KB * 0.001 = 508.74KB /1024 = 0.5MB

    例程3 没有显示初始化,在main方法中使用全局变量

    源码:

    #include <unistd.h>

    #include <string.h>

    char arr[100*1024*1024]; //声明了100MB空间,没有显示初始化

    int main(int argc,char*argv[])

    {

      memset(arr,1,100*1024*1024); //给arr数组全赋值为1

      while(1)

      {

        sleep(1);

      }

      return0;

    }

    汇编:

             .file  "test_uninitialized2.cpp"

        .globlarr

        .bss

        .align 32

        .type  arr, @object

        .size  arr104857600

    arr:

        .zero  104857600

        .text

        .globlmain

        .type  main, @function

    main:

    ..............

    结果:

    与例程1的结果相比,没有多少差别。

    运行时占用的内存:

    内存总共大小:508740KB /1024 = 497MB 约为 512MB

    进程占用内存:508740KB * 0.203 = 103274.22KB /1024 = 100.85MB

    例程4 显示初始化,在main方法中使用全局变量

    源码:

    #include <unistd.h>

    #include <string.h>

    char arr[100*1024*1024]={'a'};//声明了100MB空间,显示初始化

    int main(int argc,char*argv[])

    {

      memset(arr,1,100*1024*1024); //给arr数组全赋值为1

      while(1)

      {

        sleep(1);

      }

      return0;

    }

    汇编:

             .file  "test_initialized2.cpp"

        .globlarr

        .data

        .align 32

        .type  arr, @object

        .size  arr104857600

    arr:

        .byte  97

        .zero  104857599

        .text

        .globlmain

        .type  main, @function

    main:

    ..............

    结果:

    与例程2的结果相比,没有多少差别。

    运行时占用的内存:

    内存总共大小:508740KB /1024 = 497MB 约为 512MB

    进程占用内存:508740KB * 0.203 = 103274.22KB /1024 = 100.85MB

    例程5 没有显示初始化,打印虚拟内存地址

    源码:

    #include <unistd.h>

    #include <stdio.h>

    char arr[100*1024*1024];

    int main(int argc,char*argv[])

    {

      printf("address of arr[0]                     = %p ",&arr[0]);

      printf("address of arr[100 * 1024 * 1024 - 1] = %p ",&arr[100*1024*1024-1]);

      while(1)

      {

        sleep(1);

      }

      return0;

    }

    结果:

    arr[100 * 1024 * 1024]的内存分布:

    0x804a040

    …………

    0xe44a03f

    上述空间为100MB

    查看虚拟内存地址:

    08048000-08049000

    08049000-0804a000

    0804a000-0804b000

    0804b000-0e44b000// 100MB空间

    最后两段是数据段,其中红色是BSS

    例程6 显示初始化,打印虚拟内存地址

    源码:

    #include <unistd.h>

    #include <stdio.h>

    char arr[100*1024*1024]={'a'};

    int main(int argc,char*argv[])

    {

      printf("address of arr[0]                     = %p ",&arr[0]);

      printf("address of arr[100 * 1024 * 1024 - 1] = %p ",&arr[100*1024*1024-1]);

      while(1)

      {

        sleep(1);

      }

      return0;

    }

    结果:

    与例程5的内存地址一样!!神奇地证明了进程中使用的内存地址都是虚拟的。

    arr[100 * 1024 * 1024]的内存分布:

    0x804a040

    …………

    0xe44a03f

    上述空间为100MB

    查看虚拟内存地址:

    08048000-08049000

    08049000-0804a000

    0804a000-0e44b000// 约为100 MB空间

    最后一段是数据段,不同的是例程6没有BSS

     
     
     
  • 相关阅读:
    Atom | 编辑器Atom的使用小结
    离散数学 | ∅ 与 {∅} 出现在离散数学幂集合中
    Excel | 如何用Excel实现证件照底色调换
    Awesome图标 | 如何在某些编辑软件中使用Font Awesome字体图标
    将SSH的秘钥每次输入的密码去掉
    用canvas 画一个水位波纹上升下降的进度球
    解决Enter passphrase for key '/Users/mac/.ssh/id_rsa':的问题
    vue 注册全局过滤器
    解决vue的父组件打开子组件弹窗只走一次mounted的问题
    forEach终止循环的方法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3367419.html
Copyright © 2011-2022 走看看