一个Qt写的包含HTTP下载文件功能的小项目,由于对QNetworkReply的机制不太了解
于是将原来自己定义的类QDownload丢弃重新用wininet的api实现了一个QHttpDownload类,继承自QThread
这样每个QHttpDownload实例对应一个下载任务,在线程内进行不会导致主界面卡死.
因为要不断的编译调试.突然发现即使没有任何代码的改动,直接启动调试时候也会提示项目已过期.
Vc的编译默认都是增量编译的,也就是只编译上次成功编译以来修改过的文件.很明显这里出现了差错,导致提示项目过期.
网上搜来的是说项目里包含了不存在的头文件导致的.
这个包含不是用#include包含进来的,#include的直接会提示找不到头文件.
这里的包含是指解决方案资源管理器里面显示的那些文件.也就是在vcxproj文件里标明的的头文件
移除掉不存在的头文件就可以了.
步骤:
1.开启Vs2010 ide的相关log
参考:http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx
2.使用DebugView监视看是哪个头文件不存在 / 或者用其他工具分析vcxproj文件
一般形式就类似于
project "xxx" is not up to date because xxxx were missing.
up to date is missing : xxxxx.h
这时候在解决方案资源管理器里移除,重新生成一次就可以了.
相关链接
http://code.logos.com/blog/2010/12/fixing_c_projects_that_always_rebuild.html
2012.07.31补遗
在自己电脑上即使那些头文件都去掉还是会发生总是重编译的情况
经过研究是跟预编译有关
若项目里的预编译头文件修改,或者预编译头文件里#include的头文件发生改变则需要清理项目并重新生成一次.
也就是说生成后会修改pch文件的情况下必须手动重新生成一次.
个案而已,记录下来免得下次不知道怎么解决.