【问题标题】:VC++2008 project always "out of date"VC++2008 项目总是“过时”
【发布时间】:2010-07-30 13:10:48
【问题描述】:

在一个解决方案中,我有两个 VC++ 项目。项目 A 的链接器输入是项目 B 编译的 .obj 文件。

Visual Studio (2008) 总是 告诉我项目 A“已过时”,并在每次我想运行/调试/构建时提示我询问是否要重新构建它/ETC。甚至在构建整个解决方案后立即:我进行了成功的完整构建,然后再次单击构建,它想要重新链接项目 A。

如何防止这种情况发生?有人知道这里发生了什么吗?

【问题讨论】:

    标签: c++ visual-studio visual-studio-2008 visual-c++


    【解决方案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“触摸”。

    在一个项目中,我必须对其包含文件执行相同的操作。但是在像那样“触摸”文件之后,问题就消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多