专职C++

不能停止的脚步

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

常用链接

留言簿(28)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

#

最近在搞一个项目,需要用的curl。因为使用windows下面开发比较习惯,于是用它了。然并不是一帆风顺的。
先去官网下载curl。我先下下载了libcurl-7.19.3_win32_ssl_msvc.zip,然后提示"应用程序无法正常启动(0xc000007)",反复测试没用(本人是win7 64位环境),它自带的也是这样。看到也有人说这个问题,好像是64位环境的问题,于是就重新搞一下。
首先到官网下载64位的:http://curl.haxx.se/download.html,在这里选择Use the curl Download Wizard!,然后按照要求,下载了一个64位版本。下载后的文件名是curl-7.34.0-devel-mingw64.7z。然后解压就可以了。
vs工程也要加一个,选择工程树具体的某个工程,点该工程的属性,终出下面的对话框后,选择配置管理器(图中所示)


设置先成后,选择相应的工程配置方案,就可以了。


下步就是如何加到工程,在下载的libcurl中,是用mingw编译了,没有的lib文件,但是他提供了def文件,我们可以用它来生成lib。在curl-7.34.0-devel-mingw64\lib64里面。
在windows的开始菜单找到visual studio 2013,选择visual studio tools,会打开一个目录,然后选择“VS2013 x64 本机工具命令提示”进入命令提示符下面。
进入到libcurl解压的目录,在lib64目录下面。然后输入下面两个命令,就可以得到两个lib了
lib /DEF:libcurl.def /MACHINE:X64
lib /DEF:libssh2.def /MACHINE:X64
把生成的libcurl.lib和libssh2.lib放到工程可以找到的lib目录,再把curl-7.34.0-devel-mingw64\bin下的所有dll复制到程序生成.exe的目录,这样,就可以在工程中使用curl了。
下面的博客提供了一个curl的使用,可以直接用,并编译通过。http://dewei.iteye.com/blog/1572016,唯一不同的指定lib
#include "curl/curl.h"  
#pragma comment(lib, "libcurl.lib")  

posted @ 2014-04-15 17:03 冬瓜 阅读(9630) | 评论 (2)编辑 收藏

平时用dynamic_cast,但是一直没有考虑过性能。但是性能怎么样,还真没想过。下测试就是一段测试程序,在linux下跑。
循环2亿次,用dynamic_cast<XTestEx *>()的时候是2.39978秒,用(XTestEx *)直接转的时间是0.723503秒。如果加上附加代码带来的误差。dynamic_cast<XTestEx *>()费时是(XTestEx *)的近4倍.但总的来说,性能影响不大!
#include <iostream>
#include<sys/time.h>

using namespace std;

class XTestBase
{
public:
    virtual ~XTestBase(){}
    virtual int getValue() = 0;
    
};

class XTestEx : public XTestBase
{
public:
    virtual ~XTestEx(){}
    virtual int getValue() 
    {
        return 100;
    }
};

int main(int argc, char * argv[])
{
    struct timeval st1,st2;

    XTestBase * pB = new XTestEx();
    int iC = 0;
    gettimeofday(&st1, NULL);
    for(int i = 0; i < 200000000; i++)
    {
        XTestEx * p = dynamic_cast<XTestEx *>(pB);
        iC += p->getValue();
    }
    gettimeofday(&st2, NULL);
    long long diff  = 1000000ll * (st2.tv_sec-st1.tv_sec)+ st2.tv_usec-st1.tv_usec;
    cout<<"diff:"<<(diff/1000000.0)<<endl;

    gettimeofday(&st1, NULL);
    for(int i = 0; i < 200000000; i++)
    {
        XTestEx * p = (XTestEx *)pB;
        iC += p->getValue();
    }
    gettimeofday(&st2, NULL);
    diff  = 1000000ll * (st2.tv_sec-st1.tv_sec)+ st2.tv_usec-st1.tv_usec;
    cout<<"diff:"<<(diff/1000000.0)<<endl;

    return 0;
}
posted @ 2014-04-02 11:46 冬瓜 阅读(1915) | 评论 (1)编辑 收藏

     摘要: 第一:没有美术,只好自己用PS。先用PS在原来的4个方向上,做一个履带差异的4方向坦克。
第二:用SpritePacker打包成tankbase.plist。然后用CCSpriteFrameCache加载到内存中。
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("basetank.plist");  阅读全文
posted @ 2014-03-25 00:05 冬瓜 阅读(1399) | 评论 (1)编辑 收藏

(基于cocos2dx 2.2.2)
如果很多图片很小或常用,可以使用CCSpriteFrameCache,来避免资源被反复加载。 
(注:对于plist,我这里使用的是一个免费的工具,SpritePacker,http://spritepacker.kernys.net)

如:CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("basetank.plist");
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>frames</key>
    <dict>
        <key>basetank_down.png</key>
        <dict>
            <key>frame</key>
            <string>{{0,0},{26,26}}</string>
            <key>offset</key>
            <string>{0,0}</string>
            <key>rotated</key>
            <false/>
            <key>sourceColorRect</key>
            <string>{{3,3},{26,26}}</string>
            <key>sourceSize</key>
            <string>{32,32}</string>
        </dict>
        <key>basetank_left.png</key>
        <dict>
            <key>frame</key>
            <string>{{0,27},{26,26}}</string>
            <key>offset</key>
            <string>{0,0}</string>
            <key>rotated</key>
            <false/>
            <key>sourceColorRect</key>
            <string>{{3,3},{26,26}}</string>
            <key>sourceSize</key>
            <string>{32,32}</string>
        </dict>
        <key>basetank_right.png</key>
        <dict>
            <key>frame</key>
            <string>{{0,54},{26,26}}</string>
            <key>offset</key>
            <string>{0,0}</string>
            <key>rotated</key>
            <false/>
            <key>sourceColorRect</key>
            <string>{{3,3},{26,26}}</string>
            <key>sourceSize</key>
            <string>{32,32}</string>
        </dict>
        <key>basetank_up.png</key>
        <dict>
            <key>frame</key>
            <string>{{0,81},{26,26}}</string>
            <key>offset</key>
            <string>{0,0}</string>
            <key>rotated</key>
            <false/>
            <key>sourceColorRect</key>
            <string>{{3,3},{26,26}}</string>
            <key>sourceSize</key>
            <string>{32,32}</string>
        </dict>
    </dict>
    <key>metadata</key>
    <dict>
        <key>format</key>
        <integer>2</integer>
        <key>realTextureFileName</key>
        <string>basetank.png</string>
        <key>size</key>
        <string>{32,128}</string>
        <key>smartupdate</key>
        <string>{None}</string>
        <key>textureFileName</key>
        <string>basetank.png</string>
    </dict>
</dict>
</plist>
这样,就可以完成一组图片资源加载。
            CCSprite * p1Pic = CCSprite::createWithSpriteFrameName(“basetank_up.png”);
            p1Pic->setPosition(GetPosition(pPlayerLayer, "Player1"));
            p1Pic->setAnchorPoint(ccp(0, 0));
            this->addChild(p1Pic);
如需更换图片,
p1Pic
->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("basetank_right.png"));
这里的作用相当于是把tank向右转
posted @ 2014-03-24 00:08 冬瓜 阅读(1948) | 评论 (0)编辑 收藏

(基于cocos2dx 2.2.2)现在下载的cygwin自带的gcc编译器的版本是4.8.x了,也就是全面支持c++0x11版本了。(我用的vs2013也已经大部分支持C++0x11的版本)。但是默认情况下,gcc是不支持的,需要在编译选项设置开关。
我们用文本编辑器打开proj.android\jni\Application.mk,并增加 -std=c++0x,这样就可以编译c++0x11的C++代码了。
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1 -std=c++0x
posted @ 2014-03-16 23:35 冬瓜 阅读(1443) | 评论 (0)编辑 收藏

     摘要: 在手机上调试,不能所见所得日志,这个是一个比较麻烦的事,于是想到了,用多行文本做日志。
下面是日志的代码。从CCLabelTTF派生。这里主要提供了VLog和Log两个日志输出函数。
定义如下
void VLog(const char * paramFormat, va_list param_argptr);
void Log(const char * paramFormat, ...);
其中VLog主要应用于已经有va_list的情况下。  阅读全文
posted @ 2014-03-16 23:15 冬瓜 阅读(4023) | 评论 (0)编辑 收藏

     摘要: 游戏周迭代开发


游戏上线后,可以进行周迭代模式。即每周开发新功能和修复bug,并每周估计时间停服更新。如果无版本更新,也要进行例行停服维护。  阅读全文
posted @ 2014-02-17 21:01 冬瓜 阅读(1506) | 评论 (0)编辑 收藏

     摘要: http://www.blogjava.net/kuuyee/archive/2013/04/21/398171.html  阅读全文
posted @ 2014-02-12 09:52 冬瓜 阅读(385) | 评论 (0)编辑 收藏

     摘要: 原文地址:http://www.blogjava.net/kuuyee/archive/2011/04/25/348985.html

今天Jenkins(以前叫Hudson)CI服务器突然挂了,排查了半天发现磁盘已经100%,真后悔当初没把磁盘设大点,其实可以用LVM调整一下,但是心里还是没底,怕把数据都丢失了,决定以后再调整磁盘分配。目前先吧Jenkins下没用的项目都干掉,可以腾出很多空间。

我们都知道使用du命令可以查看目录,例如查看/home/kuuyee目录占用磁盘空间大小可以使用下面的命令:  阅读全文
posted @ 2014-02-12 09:48 冬瓜 阅读(575) | 评论 (0)编辑 收藏

     摘要: 在游戏开发过程中,游戏配置更新是很常的事情。其中一个主要的方法,是用excel来进行游戏配表。然后导出,可以导出前台和后台的配置,这样策划就不用针对前后台,分别给配置了。在这里,python就有大作用了。通过以前的积累,这里给出一个目前我这里使用的最新的,希望能给大家有所帮助。
我这里配置,支持.conf(ini格式),.csv,.jsn和.mall或.js(json格式),.cfg(我这里定义的一种数据格式和对应的ActionScript代码),还有.sql和.key格式。并支持最新的excel 2013的表格。(这个是由第三方库提供的)。
  阅读全文
posted @ 2014-02-08 17:19 冬瓜 阅读(2912) | 评论 (1)编辑 收藏

仅列出标题
共17页: First 6 7 8 9 10 11 12 13 14 Last