Quantcast
Channel: C++博客-所有随笔
Viewing all 7881 articles
Browse latest View live

Galaxy2D Game Engine 4.1 开发版 Update (2014-1-26)

$
0
0
Update (2014-1-26):
◆修改ggeGuiLoader可以设置一个默认创建函数
◆ggeSprite删除RenderEx等函数,添加SetPosition等函数用于设置渲染位置,只在必要时刷新渲染位置即可
◆粒子系统去掉useFadeColor属性,增加fadeColorWeight属性,用于控制渐变到过渡颜色的速度
◆重构ggeRenderObj
◆重构Gui系统
◆TexturePacker文件列表增加图标以区分文件和目录
◆TexturePacker文件列表增加自动排序功能
◆TexturePacker增加纹理缩放功能
◆TexturePacker修改导出文件字段名,详见工具文档
◆TexturePacker添加纹理尺寸检测功能,尽可能生成小于最大纹理尺寸的纹理

下载地址 Galaxy2D Game Engine 4.1 开发版


剑孤寒 2014-01-26 11:27 发表评论

windows 2008R2中PHP5.4 连接到sqlserver2005

$
0
0
1、客户端也就是PHP所在端需要安装Native Client
2、sqlserver端需要agent服务,开通tcp/ip和name 管道
2、WIN2K8需要关闭防火墙或者保证PHP端能ping通sqlserver服务器
3、注意serverName格式
<?php
ini_set("display_errors","on");
$serverName = "192.168.0.103\WIN2008";
$connectionInfo = array("UID" => "sa", "PWD" => "sa", "Database"=>"yysms");
$conn=sqlsrv_connect($serverName,$connectionInfo);
if ($conn === false)
 {
     die( print_r( sqlsrv_errors(), true));
}
else
{
    echo "mssql2005 连接正确";
}
?>

bukebushuo 2014-01-26 17:14 发表评论

用 boost::multi_index 管理玩家

$
0
0
用 boost::multi_index 管理玩家

(金庆的专栏)

网游服务器上的玩家集合需要多种索引:如用ID查找,角色名查找, 用登录时分配的会话ID查找。
用boost::multi_index进行玩家的管理,可在该容器上建立多种索引。
 1 class Player
 2 {
 3 public:
 4     const PlayerId & GetId() const;
 5     const std::string & GetName() const;
 6     const SessionId & GetSessionId() const;
 7     
 8 };
 9 
10 typedef boost::shared_ptr<Player> PlayerPtr;
11 
12 struct tagName {};
13 
14 typedef boost::multi_index::multi_index_container
15 <
16     PlayerPtr,
17     index_by
18     <
19         hashed_unique
20         <
21             tag<PlayerId>,
22             member<Player, PlayerId, &Player::GetId>
23         >,  // hashed_unique
24         
25         hashed_unique
26         <
27             tag<tagName>,
28             member<Player, std::string&Player::GetName>
29         >,  // hashed_unique
30         
31         hashed_unique
32         <
33             tag<SessionId>,
34             member<Player, SessionId, &Player::GetSessionId>
35         >  // hashed_unique
36     >  // index_by
37 > PlayerSet;
38 
39 typedef PlayerSet::index<PlayerId>::type PlayerSetById;
40 typedef PlayerSet::index<tagName>::type PlayerSetByName;
41 typedef PlayerSet::index<SessionId>::type PlayerSetBySessionId;
42 
使用如:
PlayerSet setPlayers;
PlayerSetById & rSet = setPlayers.get<PlayerId>();
PlayerSetById::const_iterator itr = rSet.find(id);


金庆 2014-01-27 14:58 发表评论

14年1月28日

尝试创建编译cocos2dx 3.0beta工程

$
0
0
     摘要: cocos2dx 3.0这个版本,与2.x版本完全不一样。并全面引入了C++0x11的内容。删除了很多不必要的东西。
参考前面的写的文章,地址:http://www.cppblog.com/zdhsoft/archive/2013/11/06/cocos2dx.html 安装完成ant,adt-bundle
ndk,python。使用adt-bundle下的SDK Manager更新相应的SDK版本。  阅读全文

冬瓜 2014-01-28 18:38 发表评论

Great Coder (1)

$
0
0
凌晨3点,在一间狭窄的屋子里,光线昏暗,烟味浓重,一个挂接在机箱外的硬盘不时闪着蓝色光芒。靠背椅上坐着一个胡子拉茬,满眼血丝的人,他披着一件一个多月没洗的外套,走火入魔般地敲打着键盘。“难道是这里?”,他喃喃自语地按下了F5,这一次又要等上半个小时。他习惯性地伸出双脚往桌子上一搭,忽然想起了刚才在网上和他争吵的那个菜鸟,“这都不懂?!”,紧绷的脸上露出了诡异的微笑。。。 但是一瞬间他好像感觉到了什么,鼠标拖动一番之后,僵硬的表情凝固了足足十秒钟。“不可能啊!”他狠狠吸了一口烟,双手在键盘上一阵捣腾,一分钟,两分钟。。。五分钟,终于紧皱的眉头慢慢舒展,仿佛一切又回到了他的控制之中。只见他打字越来越快,越来越快,直到戛然而止。。。 原来是QQ消息来了,他有些后悔没把QQ关了,F-Word脱口而出,显然他不喜欢三更半夜被别人打断思路。他瞥了一眼闪烁的头像,顿时眼冒怒光:这菜鸟还没搞定吗?心烦意乱之余他点开了头像。。。 “大侠,我错了,刚才我试了下你说的办法,搞定了”,他很不耐烦听到这些,正准备拉黑,消息又响了:“但是我发现还有更好的办法。。。”一种说不出来的感觉,是愤怒?是好奇?他决定不回消息,看看那菜鸟怎么说。。。 笑了,他笑了,显然他发现了一个愚蠢的错误,于是毫不犹豫的打了几个字发了过去,那边是沉默,久久的沉默。他估计菜鸟正在努力理解那几个字,便切回刚才的窗口,却想不起刚才写到哪了。。。 终于打字声再次响起,他完全沉浸在了自己的世界里,一切都是那么的井然有序,太完美了。激动人心的时刻来到了,他把左手食指停在F5上方,想了几秒钟,按下去了! 他闭上眼睛,想象着半个小时之后的喜悦。这时一阵饥饿感突如而来,上一餐吃的啥?现在几点了?一时想不起来。趁着这会有空他想去找点吃的,但是。。。QQ又响了! 似乎是因为这会闲着,也似乎是为了“大侠”二字,他再次点开了头像,不错,还是那位菜鸟,还是称呼他“大侠”,对他竖了一个大拇指。不忙的他心情显然好了很多,打算再说点什么,又觉得没必要。他仿佛从菜鸟身上看到了若干年前的自己,于是飞快地敲了几个字。。。

Binormal 2014-01-29 00:23 发表评论

Great Coder (2)

$
0
0
这一夜,他翻来覆去睡不着,黑暗中的天花板越来越清晰。上次出现这情况还是三年前,那时他还是个菜鸟,很多东西似懂非懂。但是这次不一样,他已经答应了别人,千万不能搞砸了。 他隐隐约约记得U盘里似乎有他师兄给的一个文件,当时没看懂直接存在code目录下了。师兄好像说过这是他熬夜研究出来的东西,发给师弟欣赏下,但是版权要归他。当他双击那个EXE看到里面的画面之后,对师兄的佩服油然而生,从此暗下决心要像他那样。 但是师兄好久没消息了,上次师兄说过觉得累了,不打算继续干了,两人的话题也就越来越少了。 他知道,写这东西是需要灵感的,有时候死磕一天也比不上那灵光一闪!灵光呢?灵光呢?他无法想象明天别人的目光。他对自己说:这一切是不可能发生的! 突然他坐起来了,右手伸向了电源键,休眠中的电脑传来了标准的开机声音。很快,在他面前出现了新加卷里的那个文件。他飞快地做了个快捷方式,然后切回桌面。 “师兄果然是师兄!”,那一刻他由衷赞叹却又思绪万千,他觉得师兄的选择太草率了,如果大家都能坚持下来,想切磋就切磋,岂非人生快事! 十分钟之后,电脑关上了,这回不是休眠,是关机。。。

Binormal 2014-01-29 00:24 发表评论

Great Coder (3)

$
0
0
"又改!"对面的那位哥们已经失控了,只见他坦然一笑,好像见过成百上千次似的。他知道,写这东西,就算写的再好,碰见外行,说啥也没用。你只要把结果整对,他就闭嘴了。想到这他把最后一个分号打上,一切准确无误。 "不行,我的意思是这样这样",他有点不高兴,刚才明明不是这样说的,电视里说做人要厚道。但是改起来不麻烦,他赌气般地找到几处文字,退格,打字,哦了。 "这边还要加点东西,要不然太难看了",他知道电视里说暴躁不好,但是此时明显有一股无名怒火在燃烧。加上应该就没事了,应该是最后一次了。他放慢打字速度,喝了点水,用这招来压制情绪。 正要发起反击,突然边上有人喊:"你看别人是这样做的,我觉得他们好NB。"于是。。。他预感一分钟以后会发生什么。。。他不想那么被动,干脆提前改掉,他要证明我们和他们一样NB,这样就清静了。 电脑锁屏,安心小解,哼着小曲,轻松惬意。他在想我就不生气就不生气。回来路上远远看见有人在等他了,他想对方一定会很惊讶怎么这么快就搞定了。。。 "这功能想了一下,还是不要了",他知道这次他忍不住了。。。

Binormal 2014-01-29 00:25 发表评论

Great Coder (4)

$
0
0
他猛地把电子书窗口一关,心情久久不能平静,这简直就是武林绝学,如果说以前所学只是零零碎碎的招式,这下绝对算大招了!他正在盘算啥时可以耍耍。。。不急!赶紧给同道中人推荐,不过估计他们这会都还在奋笔疾书中。 作者太帅了!招招要害,没有一句废话,很对他的胃口。这种人要膜拜下,忽然他想起在某群里似乎有此大名!十几个群,每个群三四百人,慢慢来。。。 终于,在一个灌水群里,目标出现了,虽然是名字的拼音缩写,但是对于他这行的人来说,已经足够标记自我了。但是群里水货多,这哥们为啥要混这个群?他在想此人会不会像他以前的老大那样,有一种仰视数学老师的感觉。如果拿围棋做比喻此人能算几段? 这哥们似乎不在线,也许还在第一线创作。先看看签名,说的太TM对了!特别最后那句,某某决定生死,说出了自己的心声。他要加好友,大侠和高手两个词反复挑选,最后选了高手二字做称呼发了过去。 他忍不住又把电子书打开,再过一遍,感觉写得太TM好了,其意义简直是促进人类进步啊!那些花前月下,喝酒吹牛的的人,你们糟蹋了那些文字。 忽然好友申请通过了!高手在线!他毫不犹豫地把那个QQ拖到了“真正高手”的那个好友组。。。

Binormal 2014-01-29 00:27 发表评论

Windows Server 2003下部署apache+php+mysql环境

$
0
0
     摘要: Windows Server 2003下部署apache+php+mysql环境
php5.rar
mysql-5.1.51-win32.msi
httpd-2.2.22-win32-x86-no_ssl.msi
在D盘创建一个目录amp,以上三个软件均安装在d:\amp目录下。
在D盘创建www目录,作为网站目录。
  阅读全文

2014-01-29 01:17 发表评论

高仿迅雷播放器

开始学习cocos2dx之一:合并编译cpp

$
0
0
过年了,终于可以有一个比较长时间的假期。虽然会有各种杂七八的事情,但总算不用想工作上的事情。埋头研究一下cocos2dx。看了一下书,有了一个大概的了解。终于下手写一个实例了。看书和实例还是有一个很大区别的。
本想有cocos2dx 3.0beta开始的,而且已经能够编译demo,但考虑来年,要在实际项目中使用,最后,还是选择了cocos2dx 2.2.2这个版本。
cocos2dx 2.2.2的安装过程,参考http://www.cppblog.com/zdhsoft/archive/2013/11/06/cocos2dx.html
然后我生了我的一个例子MyGame。
同样的问题,每次增加.cpp的文件,都需要改proj.android/jni/android.mk,这个文件。有点烦.
正好,我前些天写一个优化编译的问题,正好可以派上用场。参考http://www.cppblog.com/zdhsoft/archive/2014/01/02/makecxx.html
使用文章中的方法,在classes生成一个makecxx.py,然后再建一个makecxx.bat,.bat的内容如下:python makecxx.py . allcpp.cxx。这样,只要在生成android的时候,运行一下这个批处理文件就可以了。
最后修改proj.android/jni/android.mk,找到LOCAL_SRC_FILES,改为
LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/allcpp.cxx
其它都不变,然后,就可以编译完成。最后ant debug。就可以拿到手机上跑了:)


冬瓜 2014-01-29 12:11 发表评论

解析dump操作步骤

$
0
0
1) 首先需要有andorid sdk包,因为里面有adb工具。同时建议将adb工具所在的目录添加到系统环境变量中。
2) 将设备连接到电脑上。
3) 将dump_syms传入设备上。命令:adb push xxxxxxxx\xxxx\dump_syms /data/local/tmp
4) 将.so文件传入设备上。命令:adb push xxxx\xxxx\xxx.so /sdcard/libgame.so
5) 将dump_syms文件置为可读写。命令:chmod 0777 /data/local/tmp/dump_syms
6) 用dump_syms解析.so文件。命令:
      adb shell
      cd /data/local/tmp
      ./dump_syms /sdcard/libgame.so > /sdcard/libgame.so.sym
      exit
7) 将解析出来的符号文件提取出来。命令:adb pull /sdcard/libgame.so.sym xxxx\xxxx
8) 用ue等工具,将提取出来的符号文件打开,里面有指纹识别信息。以此指纹信息建立目录。然后将该符号文件放在该目录下。最后再将该目录放到libgame.so目录下
9) 用解析出来的符号文件,将相关的dump文件解析出来。命令:minidump_stackwalk.exe 6b4f6cbf-c474-eb78-68ee3e30-3f77c3ba.dmp D:\symbols > D:\dump\6b4f6cbf-c474-eb78-68ee3e30-3f77c3ba.dmp.txt

Jacc.Kim 2014-01-29 17:42 发表评论

开始学习cocos2dx之二:一个简单的动画

$
0
0
参考的博客地址http://4137613.blog.51cto.com/4127613/759610
但是这个博客的地址的例子,不适合2.2.2,我把代码修改了一下,OK了!参考代码如下。(原理参考原文 1         CCSize s = CCDirector::sharedDirector()->getWinSize();
 2 
 3         //#1:生成动画需要的数据类 
 4         CCTexture2D *texture = CCTextureCache::sharedTextureCache()->addImage("picgirl.png");
 5 
 6 
 7         CCArray animFrames;
 8         for (int y = 0; y < 4; y++)
 9         {
10             for (int x = 0; x < 4; x++)
11             {
12                 CCSpriteFrame *frame = CCSpriteFrame::createWithTexture(texture, CCRectMake(32 * x, 48 * y, 32, 48));
13                 animFrames.addObject(frame);
14             }
15         }
16 
17         CCAnimation *animation = CCAnimation::createWithSpriteFrames(&animFrames, 0.2f);
18         
19 
20         //#2:初始化并设置Sprite 
21         CCSprite *sprite = CCSprite::createWithSpriteFrame(CCSpriteFrame::createWithTexture(texture, CCRectMake(0 , 0, 32, 48)));//CCSprite::spriteWithSpriteFrame(frame0);//设置一个初始frame 
22         sprite->setPosition(ccp(s.width / 2, 100));
23         addChild(sprite);
24 
25         //#3:使用animation生成一个动画动作animate 
26         CCAnimate *animate = CCAnimate::create(animation);
27         sprite->runAction(CCRepeatForever::create(animate));//重复播放 
动来用的图片

冬瓜 2014-01-29 21:37 发表评论

Great Coder (5)

$
0
0
高手意味深长地说:“选择我们这行的人,是因为喜欢这行公平有序的环境,认可这行能者上庸者下的规则。”他强烈地感到共鸣,感叹相见恨晚。 高手最怕无用武之地,埋没了才华,蹉跎了青春。他们喜欢厚积薄发,不怕寂寞,只为那上阵杀敌的机会。 高手不怕难不怕累,他们常常想象自己就像冲在最前面的士兵,百折不饶,最终凭借一己之力逆袭成功。别人做不到的事情你能做到,这种感觉很爽。 他把自己的感想告诉了高手,高手只是简单地回了个“平常心”。是的,最近他常常感觉到了自己的心魔,很容易受到别的人和事的影响。为求安静,他坐到了角落里,但是耳静了心却未静。他看过一些佛经,有所领悟也有所疑惑,无欲无求的理论太消极了,他觉得人应该有所追求,对于他来说这份追求就是英雄情结。 他有些技痒,想和高手切磋,不想高手有事先下了,这让他意犹未尽,什么叫知音,这就是!高手的功力深不可测,他很明显感觉到了。他觉得自己找到了新目标,又有了努力的动力,至少为了下次的PK。

Binormal 2014-01-29 23:56 发表评论

提醒自己,move on

$
0
0
无论是为了自己的未来,还是家人的期望和幸福。
我都需要提醒自己,好好努力,发展自己的实力。这些才是未来幸福的基础。
感情不成熟,那就先让它慢慢自由的生长,如果将来能开花结果,当然好;如果走不到那一步,也没有什么。毕竟感情不能当饭吃。
自己有实力了,爱情,家庭自然会牢固。才会有幸福的生活。否则,没有基础的感情和家庭,幸福就像空中楼阁,很容易破碎!
------------------
努力工作,好好生活,不仅仅为自己,也为自己的亲人。
没有异性的关爱,不重要,重要的是自己对美好未来的追求不变!


abcd2007 2014-01-31 10:52 发表评论

不能分心

$
0
0
累了,想想远方的父母,想想自己的未来。可以休息,但是不能分心。
什么杂念也不能常驻心间,专注工作,其他的都是可以放松、放开的。
感情不是饭,也不是生活必需品。也许对目前的自己,它就是一个奢侈品。
没有感情,也要努力工作,好好生活。
----------------------
坦然,淡定,自勉。

abcd2007 2014-01-31 11:14 发表评论

转载:在Eclipse下搭建Android开发环境教程

$
0
0

我们昨天向各位介绍了《在NetBeans上搭建Android SDK环境》,前不久也介绍过《在MyEclipse 8.6上搭建Android开发环境》,都受到了读者的欢迎。但是很多朋友都认为NetBeans在中国用户不多,MyEclipse又是收费产品,都没有Eclipse好,很多读者都希望我们介绍一下Eclipse下搭建的Android开发环境,本文将全程演示Android开发环境的搭建过程,无需配置环境变量。所有软件都是写该文章时最新版本,希望大家喜欢。

一 相关下载

(1)Java JDK下载:

进入该网页: http://java.sun.com/javase/downloads/index.jsp (或者直接点击下载)如下图:

选择 Download JDK 只下载JDK,无需下载jre.

(2)Eclipse下载

进入该网页: http://www.eclipse.org/downloads/ (或者直接点击下载:BT下载 HTTP下载)如下图:

我们选择第一个(即eclipse IDE for java EE Developers)

(3)下载Android SDK

说明: Android SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本,后一种大概20多M,前一种70多M。

完全版下载 (android sdk 2.1 r01) 升级版下载 (建议使用这个,本例子就是使用这个这里面不包含具体版本,想要什么版本在Eclipse里面升级就行)

二 软件安装

(1)安装jdk 6u19安装完成即可,无需配置环境变量

(2)解压eclipse eclipse无需安装,解压后,直接打开就行

(3)解压android sdk 这个也无需安装,解压后供后面使用

(4)最终有三个文件夹,如下图:

三 Eclipse配置

1 安装android 开发插件

(1)打开Eclipse, 在菜单栏上选择

help->Install New SoftWare 出现如下界面:

点击 Add按钮,出现如下界面

输入网址: https://dl-ssl.google.com/android/eclipse/ (如果出错,请将https改成http)

名称: Android (这里可以自定义)

点击OK,将出现如下界面

点击 Next按钮 ,出现如下界面:

点击Next按钮,出现如下界面:

选择 I accept the terms of the license agreements点击Next,进入安装插件界面

安装完成后,出现如下界面

点击Yes按钮,重启Eclipse

2 配置Android SDK

(1)点击菜单window->preferences,进入如下界面

选择你的android SDK解压后的目录,选错了就会报错,这个是升级工具,目前还没有一个版本的SDK

(2)升级SDK版本

选择菜单 window->Android sdk and avd manager 出现如下界面

选择update all按钮,出现如下界面

选择左边的某一项,点击accept表示安装,点击reject表示不安装,我这里只选了SDK 2.1 和samples for api 7 , 自己可以任意自定义,确定后,选择install按钮,进入安装界面如下:

安装完成如下:

(3)新建AVD(android vitural device)

和上面一样,进入android sdk and avd manager,选中Vitural Devices 在点击New按钮

点击New按钮后,进入如下界面:

名称可以随便取,target选择你需要的SDK版本,SD卡大小自定义,点击 Create AVD,得到如下结果

如上显示创建AVD完毕

3 新建Android项目

(1)选择菜单file->new->other 进入如下界面:

选择新建Android Project项目,点击Next按钮,进入如下界面

名称自定义,应用程序名自定义,报名必须包含一个点以上,min SDK version里面必须输入整数

(2)点击Next出现如下界面:

注: 若有错误如: Project ... is missing required source folder: 'gen' ,则将gen->Android.Test->R.java这个文件删掉,Eclipse会为我们重新生成这个文件,并且不会报错。

(3)配置运行

右键项目->Run as -> Run Configuration 进入如下界面:

该界面,点击Browse 按钮,选择你要运行的项目

选择Target切换到以下界面

该界面选择运行的AVD,将AVD前面的方框设置为选择状态。

(4)测试项目运行

右键项目名称->run as ->Android Application 即可启动运行该Android程序,如下所示:

正在进入

测试程序运行结果

四 结束语

至此,android开发环境搭建完毕,有问题请留言。在这里要注意,我这里只是下载了android sdk r4升级工具,没有下载具体的SDK,而是通过在Eclipse里面的Android SDK管理工具升级的,你也可以直接下载具体的SDK版本,如: Android sdk 2.1 r1 上面有这个的下载链接,但我任务用升级工具更好。

转载自:http://www.uml.org.cn/mobiledev/201305134.asp

我们昨天向各位介绍了《在NetBeans上搭建Android SDK环境》,前不久也介绍过《在MyEclipse 8.6上搭建Android开发环境》,都受到了读者的欢迎。但是很多朋友都认为NetBeans在中国用户不多,MyEclipse又是收费产品,都没有Eclipse好,很多读者都希望我们介绍一下Eclipse下搭建的Android开发环境,本文将全程演示Android开发环境的搭建过程,无需配置环境变量。所有软件都是写该文章时最新版本,希望大家喜欢。

一 相关下载

(1)Java JDK下载:

进入该网页: http://java.sun.com/javase/downloads/index.jsp (或者直接点击下载)如下图:

选择 Download JDK 只下载JDK,无需下载jre.

(2)Eclipse下载

进入该网页: http://www.eclipse.org/downloads/ (或者直接点击下载:BT下载 HTTP下载)如下图:

我们选择第一个(即eclipse IDE for java EE Developers)

(3)下载Android SDK

说明: Android SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本,后一种大概20多M,前一种70多M。

完全版下载 (android sdk 2.1 r01) 升级版下载 (建议使用这个,本例子就是使用这个这里面不包含具体版本,想要什么版本在Eclipse里面升级就行)

二 软件安装

(1)安装jdk 6u19安装完成即可,无需配置环境变量

(2)解压eclipse eclipse无需安装,解压后,直接打开就行

(3)解压android sdk 这个也无需安装,解压后供后面使用

(4)最终有三个文件夹,如下图:

三 Eclipse配置

1 安装android 开发插件

(1)打开Eclipse, 在菜单栏上选择

help->Install New SoftWare 出现如下界面:

点击 Add按钮,出现如下界面

输入网址: https://dl-ssl.google.com/android/eclipse/ (如果出错,请将https改成http)

名称: Android (这里可以自定义)

点击OK,将出现如下界面

点击 Next按钮 ,出现如下界面:

点击Next按钮,出现如下界面:

选择 I accept the terms of the license agreements点击Next,进入安装插件界面

安装完成后,出现如下界面

点击Yes按钮,重启Eclipse

2 配置Android SDK

(1)点击菜单window->preferences,进入如下界面

选择你的android SDK解压后的目录,选错了就会报错,这个是升级工具,目前还没有一个版本的SDK

(2)升级SDK版本

选择菜单 window->Android sdk and avd manager 出现如下界面

选择update all按钮,出现如下界面

选择左边的某一项,点击accept表示安装,点击reject表示不安装,我这里只选了SDK 2.1 和samples for api 7 , 自己可以任意自定义,确定后,选择install按钮,进入安装界面如下:

安装完成如下:

(3)新建AVD(android vitural device)

和上面一样,进入android sdk and avd manager,选中Vitural Devices 在点击New按钮

点击New按钮后,进入如下界面:

名称可以随便取,target选择你需要的SDK版本,SD卡大小自定义,点击 Create AVD,得到如下结果

如上显示创建AVD完毕

3 新建Android项目

(1)选择菜单file->new->other 进入如下界面:

选择新建Android Project项目,点击Next按钮,进入如下界面

名称自定义,应用程序名自定义,报名必须包含一个点以上,min SDK version里面必须输入整数

(2)点击Next出现如下界面:

注: 若有错误如: Project ... is missing required source folder: 'gen' ,则将gen->Android.Test->R.java这个文件删掉,Eclipse会为我们重新生成这个文件,并且不会报错。

(3)配置运行

右键项目->Run as -> Run Configuration 进入如下界面:

该界面,点击Browse 按钮,选择你要运行的项目

选择Target切换到以下界面

该界面选择运行的AVD,将AVD前面的方框设置为选择状态。

(4)测试项目运行

右键项目名称->run as ->Android Application 即可启动运行该Android程序,如下所示:

正在进入

测试程序运行结果

四 结束语

至此,android开发环境搭建完毕,有问题请留言。在这里要注意,我这里只是下载了android sdk r4升级工具,没有下载具体的SDK,而是通过在Eclipse里面的Android SDK管理工具升级的,你也可以直接下载具体的SDK版本,如: Android sdk 2.1 r1 上面有这个的下载链接,但我任务用升级工具更好。




刘志鹏 2014-02-01 11:05 发表评论

2012-2013年AIREngine开发总结及未来展望

智能指针单例

$
0
0
智能指针单例

(金庆的专栏)

普通单例如果是new出来的,一般不会有删除,或者需要调用一个删除函数;
如果是static,将会在main()之后删除,无法做到在main()结束时删除.

智能指针的单例,在初次使用时new, 当无人引用时自动删除,删除后还会new.

原理是保存一个weak_ptr, 返回智能指针.

 1 class SmartSingleton : boost::noncopyable
 2 {
 3 private:
 4     static boost::mutex _mutex;
 5     static boost::weak_ptr<SmartSingleton> _thisWeakPtr;
 6 
 7     SmartSingleton();
 8 
 9 public:
10     ~SmartSingleton();
11 
12     typedef boost::shared_ptr<SmartSingleton> SmartSingletonPtr;
13     static SmartSingletonPtr getInstance()
14     {
15         SmartSingletonPtr p = _thisWeakPtr.lock();
16         if (p) return p;
17         boost::lock_guard<boost::mutex> lock(_mutex);
18         p = _thisWeakPtr.lock();
19         if (p) return p;
20         p.reset(new SmartSingleton);
21         _thisWeakPtr = p;
22         return p;
23     }
24 };
25 
26 boost::weak_ptr<SmartSingleton> SmartSingleton::_thisWeakPtr;
27 boost::mutex SmartSingleton::_mutex;
28 

参考:

(A dynamic) Singleton using weak_ptr and shared_ptr
http://boost.2283326.n4.nabble.com/A-dynamic-Singleton-using-weak-ptr-and-shared-ptr-td2581447.html

Several C++ singleton implementations
http://silviuardelean.ro/2012/06/05/few-singleton-approaches/


金庆 2014-02-02 14:44 发表评论
Viewing all 7881 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>