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:\Windows\System32\drivers\etc\hosts 文件
(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\template目下的文件夹到cocos2d-x 2.2.0\template下
③复制cocos2d-x 2.1.3目录下文件到cocos2d-x 2.2.0下
④运行
注意:
完成后到vs10 解决方案》添加》新建项目 看看是否有红色区域的部分
如果你没有,那么用文本工具打开在最后面加一句pause(如下图)在运行
如果你看到下图
那么在运行中输入 regedit 进入注册表,把[HKEY_CLASSES_ROOT\.js] 项下的那个默认值改成 "JSFile" 在次运行就好了
小提示:
Ⅰ通过这中方法建立的项目要把这个项目设置为启动项才行 项目右键》设置为启动项
Ⅱ下面红色框框内的东西是列子如果你不看可以 项目右键》移除 (不会删除只是不会在这里出现也不会编译,如果需要的话你可以 添加》现有项目 添加回来)
蓝色框框的是js 和 lua脚本的支持文件如果你不用也可以卸载,但是我推荐 项目右键》卸载项目
Ⅲ右键解决方案》配置管理器可以管理你需要生成的项目,需要看的列子和库只需编译一次就行了,然后你可以取消他们的生成,只编译你的项目
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:\cygwin\bin 配置到系统path环境变量中去
7.把ndk r9解压到你想要的目录
8.在eclipse中导入cocos2d-x的项目
(1)在eclipse中导入 D:\cocos2dx_2.2.0\cocos2dx\platform\android\java 项目
(2)在eclipse中导入 D:\cocos2dx_2.2.0\projects\HelloWorld\proj.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
编译器初始化全局变量,并分配虚拟内存
目录
编译器初始化全局变量,并分配虚拟内存
问题:
解释:
执行文件的大小
什么时候初始化?
什么时候分配内存?
为什么程序开始运行时的内存是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段 + 数据段 + 文本段 + 其他。
例程 |
执行文件大小 |
7376Byte = 7.2KB |
|
140865010Byte = 134.3MB |
|
7415Byte=7.2KB |
|
140865045Byte = 134.3MB |
初始化 |
执行文件大小 |
没有显示初始化 |
7376Byte = 7.2KB |
显示初始化 |
140865010Byte = 134.3MB |
什么时候初始化?
- 1. 手动初始化
编译时根据赋值进行初始化,存储在数据段
- 2. 默认初始化
编译时初始化,只是记录其大小,存储在BSS段
BSS段的值全是0,由此可见为什么默认初始化int是0,char是空了。对于内部类型和枚举默认初始化是0.
什么时候分配内存?
编译完,全局变量占用的空间就分配好了。
编译器给arr[100 * 1024 * 1024]分配的虚拟内存:
0x804a040
…………
0xe44a03f
结合例程5和例程6的结果可知,无论是否显示初始化,编译后全局变量的内存都分配好了,都是虚拟内存。
为什么程序开始运行时的内存是0.5MB而不是100MB?
例程 |
是否使用全局变量arr |
进程占用内存 |
不使用 |
0.5MB |
|
0.5MB |
||
在main方法中使用全局变量arr memset(arr,1,100*1024*1024) |
100.85MB |
|
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 arr, 104857600
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 arr, 104857600
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 arr, 104857600
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\n",&arr[0]);
printf("address of arr[100 * 1024 * 1024 - 1] = %p\n",&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\n",&arr[0]);
printf("address of arr[100 * 1024 * 1024 - 1] = %p\n",&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段
cocos2d-x-2.2.0_win7+vs2010的更多相关文章
- Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决
首先,先解决第一个问题,我们使用VS2010开发的时候,调试的时候,中文打印出来都是乱码,这个问题很纠结. 如下图: CCLOG("cclog: 测试使用标签的自动换行和个别字体大写&quo ...
- cocos2d-x-2.2.0_win7+vs2010搭建_eclipse+ndk-r9+cygwin搭建_教程以及编译问题汇总
声明:我是才用c/c++和cocos2d-x的如果有错误欢迎指出 文章内容我亲测过可以通过,同时我也会一直更新内容 感谢那些把自己的东西分享出来的人 原文地址:http://www.cnblogs.c ...
- Cocos2d-x win7 + vs2010 配置图文详解
Cocos2d-x win7 + vs2010 配置图文详解 下载最新版的cocos2d-x.打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为cocos2d ...
- (一)win7下cocos2d-x 21 + vs2010
1.下载SDK http://cocos2d.cocoachina.com/download,我下载2.1版本,cocos2d-2.1rc0-x-2.1.2-hotfix.zip @ Apr.08, ...
- Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本号的开发环境
写这篇博客时2D游戏引擎Cocos2d-x的最新版本号为2.1.4,记得非常久曾经使用博客园博主子龙山人的一篇博文<Cocos2d-x win7+vs2010配置图文具体解释(亲測)>成功 ...
- VS2010开发2dx无法解析的外部符号解决记录
首先新建HelloWorld项目... 想使用Cocos2d扩展包需要引入相关头文件,如:#include “cocos-ext.h”...接下来我们右键工程属性->配置属性->c/c++ ...
- 【转】Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本的开发环境(亲测)
http://blog.csdn.net/ccf19881030/article/details/9204801 很久以前使用博客园博主子龙山人的一篇博文<Cocos2d-x win7+vs20 ...
- win7 vs2010 安装cocos2d-x
http://blog.csdn.net/leoncoder/article/details/12523727 新安装搭建cocos2d-X的跳过这里,看以下红色開始: cocos2d-x删除vs20 ...
- 关于cocos2d安装时编译不成功(个人心得)
在解压cocos2d执行vs2010.sln时错误发生不能成功生成.遇到这样的错误: 1>c:\program files\microsoft sdks\windows\v7.0a\includ ...
随机推荐
- C#将Word,Excel与Html,PDF互转
public class OfficeHelper { /// <summary> /// word转成html /// </summary> /// <param na ...
- php_常用操作_读取文件_数据库操作
作为php新手 ,把经常用到的phpcode,做个备份 1: 文件处理 //读取配置 启动是指定文件 $filepath=$argv[1]; if(null==$filepath){ echo&quo ...
- 用css2属性clip实现网页进度条
前言 看了网上一些关于网页进度条样式的资料,有很多方式实现,针对其展现形式,有用图片的,有用css2属性clip,有用flash的,本人就学会了一种,下面就简单来介绍一下. css2的属性clip 如 ...
- 透过【百度地图API】分析双闭包问题
原文:透过[百度地图API]分析双闭包问题 摘要: 有位API爱好者问到,昨天的教程里为什么不使用for循环?他使用for循环后,也发现代码无效.这是什么原因? ------------------- ...
- Windows系统下Redis的安装
Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Github.StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http://redis.io/. 最近 ...
- poj3070--Fibonacci(矩阵的高速幂)
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9650 Accepted: 6856 Descrip ...
- 如何将经纬度利用Google Map API显示C# VS2005 Sample Code
原文 如何将经纬度利用Google Map API显示C# VS2005 Sample Code 日前写了一篇如何用GPS抓取目前所在,并回传至资料库储存,这篇将会利用这些回报的资料,将它显示在地图上 ...
- 怎样选择PHP的版本
原文:怎样选择PHP的版本 IIS 如果想使用IIS配置PHP的话,那么需要选择Non-Thread Safe(NTS)版本的PHP Apache 如果你是用的Apache的版本来自Apache Lo ...
- C# Winform 界面线程的Invoke死锁,以及Application.DoEvent的问题
1.对于非界面线程来说,Invoke是把一个操作丢到界面线程的队列里,然后阻塞,等到这个操作被界面线程完成后,才继续后续操作.也就是说,Invoke是同步的. 问题来了,如果界面线程此时正在等待这个非 ...
- java利用poi导出数据到excel
背景: 上一篇写到利用jtds连接数据库获取对应的数据,本篇写怎样用poi将数据到处到excel中,此程序为Application 正文: 第三方poi jar包:poi驱动包下载 代码片段: /** ...