2013-8-17
一、Http相关:
解决办法:项目属性->链接器->附加依赖项中添加:libcurl_imp.lib、pthreadVCE2.lib 这两个库。再编译,走你。
二、在程序编译没错,调试的时候却提示到:
void CCObject::retain(void) { CCAssert(m_uReference > 0, "reference count should greater than 0"); ++m_uReference; }通过堆栈调试得到是在:
cardGlobal_array=CCArray::createWithContentsOfFile("card.plist"); cardGlobal_array->retain();
有问题,通过F11进入到源码内部查处原因是图片加载的目录不对,在默认加载目录里并没有card.plist这张图片。
解决办法:加载时添加子路径,如:plist/card.plist。
2013-8-22
程序运行一两秒后出现以下错误提示:
un-Time Check Failure the value of ESP was not properly saved across a function call. this is usually a result of calling a function
declared with one calling convention with a function pointer declared with a different calling convention.
解决办法:在全局定时器上出了问题(什么是全局定时器?百度以下),在win平台上开发,那么声明函数加上关键字__stdcall,也就是在MyListener对全局定时器的声明和定义前加上:__stdcall
(PS:科普:__stdcall是函数调用约定的一种,函数调用约定主要约束了两件事:
1.参数传递顺序
2.调用堆栈由谁(调用函数或被调用函数)清理
thiscall仅仅应用于“C++”成员函数。this指针存放于CX/ECX寄存器中,参数从右到左压。thiscall不是关键词,因此不能被程序员指定。)
2013-8-29
在ScrollView中,水平拖动的图片会出现突然在竖直方向闪现的情况
解决办法:
在ScrollView的定义中,需要把ScrollView包容的layer的高度设置成和scrollView高度大小一致。
campContainer_layer->setContentSize(CCSize(140*(campCard_array->count()+3)+60+40,290)); CCScrollView* campScroll = CCScrollView::create(CCSize(400,290),campContainer_layer);
2013-9-22
再次出现以下错误提示:
un-Time Check Failure the value of ESP was not properly saved across a function call. this is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
但是这次的问题用上述的方法无法解决了,因为错误的函数不是出现在自定义的函数里,而是在ccTouchEnded里,这样就没办法再用 __stdcall的方法了。既然这个不行,那就只能在函数的代码中找错误。
最终用排除法找出错误是在:
cardLayer_other->runAction(CCSequence::create( CCScaleTo::create(0.1f,0.9f), CCScaleTo::create(0.1f,0.8f)));聪明的你肯定发现这样写是不对的。好吧,我承认犯这种错误很低级!谁让我目前还对action较为生疏呢~
于是我改成这样子:
CCActionInterval* actionTo = CCScaleTo::create(0.1f,0.9f); CCActionInterval* actionBack = actionTo->reverse(); cardLayer_other->runAction(CCSequence::create(actionTo,actionBack,NULL));运行下,又报错。错在第二个恢复动作不能直接用
actionTo->reverse();因为只有CCScaleBy 这种的动作才能直接用reverse();其他的就只能勤快点写完整咯。那么,改吧:
CCActionInterval* actionTo = CCScaleTo::create(0.1f,0.9f); CCActionInterval* actionBack = CCScaleTo::create(0.1f,0.8f); cardLayer_other->runAction(CCSequence::create(actionTo,actionBack,NULL));好了,完美运行!
2013-11-28
应用运行到析构函数的时候经常出现内存早已free等类似的错误,查看array释放有retain(),如果有的话,查看在构造函数中是否有将全局的数组或者字符串 初始化,如果有的话,注释掉它吧。。。(虽然知道这很不科学,但是很有效,呵呵)
2014-01-13
VS调试过程中,有些情况设置断点无响应,提示:当前不会命中断点等等,解决办法:
请在断点选项里设置允许源代码与原始版本不同。这个是针对单个断点进行设置。如果要对所有的断点进行设置,则要在“工具”——〉“选项”——〉“调试”——〉“要求源文件与原始版本完成匹配”去掉勾。如果还不行,就按下面这样试试:
以前为了调试“C++ Runtime Component”,把属性->调试里的“UI任务”和“代理任务”都改成“仅限本机”了。现在改回来,改成“仅限托管”。
2014-05-15
二维数组的初始化问题,
如果是定义局部的二维数组,则直接初始化,如:
int star[2][3] = {{}};
如果是在类中声明的二维数组,则不能像上面这样初始化,应该如下:
class star
{
public:
static int star[2][3];
};
在下面初始化
int star::star[2][3] = {{}};