VC++2008 项目总是“过时”
Posted
技术标签:
【中文标题】VC++2008 项目总是“过时”【英文标题】:VC++2008 project always "out of date" 【发布时间】:2010-07-30 13:10:48 【问题描述】:在一个解决方案中,我有两个 VC++ 项目。项目 A 的链接器输入是项目 B 编译的 .obj 文件。
Visual Studio (2008) 总是 告诉我项目 A“已过时”,并在每次我想运行/调试/构建时提示我询问是否要重新构建它/ETC。甚至在构建整个解决方案后立即:我进行了成功的完整构建,然后再次单击构建,它想要重新链接项目 A。
如何防止这种情况发生?有人知道这里发生了什么吗?
【问题讨论】:
【参考方案1】:我认为解决方案是停止使用其他项目中的 .obj 文件。相反,将 A 和 B 项目共有的代码分解到自己的静态库 C 中,并将 A 和 B 链接到它。
【讨论】:
我愿意接受这一点,只要我能理解为什么使用 .obj 不能按预期工作。 @user406289:您的解决方案是否在 A 和 B 之间设置了依赖关系?也许您正在以错误的顺序构建项目? 是的,解决方案中定义了一个依赖项,我也在构建顺序中确认了 B 应该在 A 之前构建。【参考方案2】:我刚刚在使用 Visual Studio 2010(有和没有 SP1)时遇到了这个问题,感谢 Ted Nugent 我能够解决它。诀窍是检查项目中列出的所有 C++ 头文件是否仍然存在,并删除不存在的头文件。显然这是编译器中的一个错误。
【讨论】:
如果我正确阅读了您的链接,则该问题特定于 VS2010。听起来这与 C++ 项目在 VS2010 中使用 msbuild 构建这一事实有关,而在 VS2008 中并非如此。 你是救生员!我遇到了这篇试图解决 VS2010 问题的帖子。完美运行!【参考方案3】:发生过类似的事情。我正在使用使用系统时间的代码,并且在调试期间我对它进行了很多操作。不知何故,这些文件有一些错误的时间戳。在构建中,它显示了哪些文件正在重新编译,所以我只是打开每个文件,强制更改(添加空间,删除空间),然后重新保存。
类似于旧的 unix“触摸”。
在一个项目中,我必须对其包含文件执行相同的操作。但是在像那样“触摸”文件之后,问题就消失了。
【讨论】:
以上是关于VC++2008 项目总是“过时”的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2010 总是认为项目已过时,但没有任何改变
Visual Studio 2010 总是认为项目已过时,但没有任何改变