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 总是认为项目已过时,但没有任何改变

从命令行将 vc++6 项目升级到 vc++ 2008

使用 VS 2013 构建 VC++ 2008 项目

VC++ 2008,OpenProcess 总是返回错误 5(拒绝访问)

Visual Studio 2008 64 位部署项目未按预期部署 64 位 VC90 合并模块