动动手指——轻松运行每一天
项目已过期的原因及解决方案
当我们修改代码后未进行编译就直接调试或运行时,Visual C++会提示我们是否编译新的代码,如图:
正常情况下就是这样。只要我们编译一次,就可以顺利运行了。
但有些时候,即便我们重新生成整个项目,项目过期提示依然会不请自来。
当然,你可以将上面那个“不再显示此对话框”勾上,再点击“是”运行程序,然后就“万事大吉”了。
可是,每次看见那编译生成一闪而过,心里却总是疙疙瘩瘩的,不舒服。
我明明什么都没改动呀!
原因一:错误的修改时间
编译器是根据文件的修改时间来确定哪些文件需要重新编译的。所以,当项目中包含了修改时间大于当前系统时间的文件时,每次运行都会收到项目过期提示。
这是比较常见的原因之一,解决方法就是把这个文件找出来,重新保存一下,时间正常了,问题自然也就解决了。
原因二:“幽灵头文件”
出于各种原因,有些头文件改名了,移动了,删除了(磁盘上),而且不再被任何.cpp文件包含,但就是忘了从项目的文件列表中移除。于是它成了一个“幽灵”,隐藏在这个项目里,时而跑出来恶作剧。
从我接触cocos2d-x的第一天开始,它们就来捣乱,但直到今天我才将它们揪出来。
在cocos2d-1.0.1-x-0.13.0-beta这个版本中有4个捣蛋鬼:
libcocos2d/include/CCPVRTexture.h
libcocos2d/touch_dispatcher/CCTouchHandler.h
tests/classes/tests/Box2DTestBed/Tests/ElasticBody.h
tests/classes/tests/Box2DTestBed/Tests/LineJoint.h
将上面的文件从项目中排除就是最有效的解决方案之一。
如果你有时间,还可以分析一下“幽灵头文件”的来源。比如上面的CCTouchHandler.h就是因为移动了位置产生的,所以将新的CCTouchHandler.h包含进来是个不错的选择。而其他三个文件都是没有引用过的,所以直接排除是没有副作用的。
今天cocos2d-2.0-rc2-x-2.0.1发布了,终于能在我的A卡上运行新版本了。
在cocos2d-2.0-rc2-x-2.0.1中依然有那么几个捣蛋鬼:
libchipmunk/include/cpArray.h
libchipmunk/include/cpCollision.h
libchipmunk/include/cpHashSet.h
libchipmunk/include/cpSpaceHash.h
tests/classes/tests/Box2DTestBed/Tests/ElasticBody.h
tests/classes/tests/Box2DTestBed/Tests/LineJoint.h
看到这里,你是不是已经忍不住要去动动手指了?