VS2010 LNK1181在重建依赖项目时

时间:2012-08-28 15:55:09

标签: visual-studio-2010 visual-c++ build

我有两个C ++(CLR)项目的解决方案。一个项目引用另一个项目,因此项目依赖项和构建顺序正确地反映了这一点。两个项目都针对同一个输出文件夹。依赖项目的依赖项配置为Copy Local: false

如果我自己“重建”依赖项,它构建正常,其目标位于输出目录中。

当我“重建”解决方案(或依赖项目)时,我得到:

error LNK1181: cannot open input file '<outdir>\Dependency.lib'

果然,依赖输出从输出目录中消失了。如果我查看构建日志,依赖项似乎已经(重新)正确构建,但是一旦依赖项目构建开始,这些输出似乎就被删除了。为什么会这样?

此外,当我“清理”解决方案时,立即“构建”解决方案,我没有任何错误。

是不是“重建”应该是有效的Clean + Build?

2 个答案:

答案 0 :(得分:1)

Visual Studio中的重建会逐个清理和构建项目,因此最终可能会发生的事情是

  • 项目A已清理。
  • 项目A已编译。
  • 清除项目B,由于输出目录相同,从项目A中删除部分输出。
  • 由于缺少依赖项,项目B无法构建。

更多讨论here

答案 1 :(得分:1)

第二个项目是在对其执行重建时从其输出目录中删除任何内容。清理不区分真正的项目输出文件和其他文件。全部清除后跟Build All不会导致它,因为在构建项目之间没有清除输出文件夹。简而言之,Visual Studio不支持输出到同一文件夹的多个项目。将它们输出到默认位置,然后让Visual Studio按照预期/设计的方式复制依赖项。