码迷,mamicode.com
首页 > 其他好文 > 详细

cocos2d的一个奇葩错误

时间:2017-05-15 22:18:02      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:declared   date   http   href   tar   stdcall   有用   难解   blank   

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.  This is usually a result of calling a function declared with one

运行时检查失败#0 - ESP的值在函数调用中未正确保存。 这通常是通过调用一个声明的函数的结果

 

解决方案:

 Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call..

这是最奇葩的错误了,有的时候不怎么出现,但一旦报这个错保准能让你求生不得求死不能。为什么?太高深了太低层了呀。查网上有关这错误的,有的说是函数调用时有内存溢出把栈给冲毁了。你说这怎么改?还有的说是调用错误,应该声明_stdcall。可是我又没用到那玩艺,难道要改低层cocos2d-x引擎呀?终于,找到一篇有用的文章说是还是函数指针错误 ,函数指针调用时与规定的格式参数不匹配会报这个错。我这个错是在update函数里出现的,调用如下:在某层init方法中:

//设置定时回调方法
auto sched = Director::getInstance()->getScheduler();
sched->schedule(//设置定时回调方法
auto sched = Director::getInstance()->getScheduler();
sched->schedule(SEL_SCHEDULE(&MenuLayer::update), this, 0.1f, false);  //每0.1秒回调一下

问题就是这个update方法声明,这位大牛是在Android环境下写的,在类声明中写成void update();

但我们知道update是声明标准是void update(float dt);而且SEL_SCHEDULE也声明了update是带参数float型,所以这里函数指针与规定的不匹配,就会报这个难解的错误,我搜索工程中所有的update,都加上参数float dt,问题解决!

cocos2d的一个奇葩错误

标签:declared   date   http   href   tar   stdcall   有用   难解   blank   

原文地址:http://www.cnblogs.com/smallsmallDeng/p/6858468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!