链接器诊断:“exe找不到或没有由最后一个增量链接构建;执行完整链接”,为什么?

时间:2014-06-12 23:46:39

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

刚刚下载了Visual C ++并输入了一个hello world并且它给了我错误:

  

LINK : c:\users\derek\documents\visual studio 2010\Projects\HelloWorld\Debug\HelloWorld.exe not found or not built by the last incremental link; performing full link

这是代码,它不会产生任何输出......

#include <iostream>
using namespace std;

int main() 
{
cout << "Hello World!";
system("PAUSE");
return 0; 
}

我做错了什么?

3 个答案:

答案 0 :(得分:3)

缺少输出

std::cout被缓冲,这意味着它不会立即显示数据 - 即使您写入数据也是如此。为了解决应用程序可能无法打印任何内容的问题,您应该在声明的输出后添加换行符,或者使用std::endl或等效项刷新它。

std::cout << "hello world" << std::endl; // new-line, and flush

诊断

您所指的诊断不是错误,而只是警告/信息性消息。

它与incremental linking有关,这是编译器用来解决每次编译应用程序时必须重建每个源的问题的一个功能。如果链接器找不到以前编译的 exe ,或者存在其他问题,它将发出所声明的诊断,如同说; “我需要做一个完整的重建,紧紧抓住”

以下 Q&amp; A

中可以阅读更多内容


正如documentation所说:

  

此外,如果满足以下任何条件,LINK将执行完整链接   情况发生:

     
      
  • 缺少增量状态(.ilk)文件。 (LINK创建一个新的.ilk文件,为后续的增量链接做准备。)

  •   
  • .ilk文件没有写入权限。 (LINK忽略.ilk文件并非增量地链接。)

  •   
  • 缺少.exe或.dll输出文件。

  •   
  • .ilk,.exe或.dll的时间戳已更改。

  •   
  • 更改了LINK选项。大多数LINK选项在构建之间更改时会导致完整链接。

  •   
  • 添加或省略对象(.obj)文件。
  •   

如果我不想要增量链接和诊断怎么办?

如果您要禁用增量链接,可以进入项目属性并删除/INCREMENTAL

参见文档:

答案 1 :(得分:1)

Linker Tools Warning LNK6004

  

自上次增量链接会话以来,已删除或更改了给定文件。 LINK尝试通过运行完整链接来重新创建增量状态(.ILK)文件来解决问题。

确保路径正确且文件存在。如果没有其他工作,可以在项目属性上禁用/ INCREMENTAL。

答案 2 :(得分:1)

您的预期输出(Hello World!)未出现的原因是您没有按要求输出换行符。输出被缓冲并且永远不会显示,或者在您按下某个键(以解除pause)并且窗口消失后在瞬间显示。

endl电话中添加cout

cout << "Hello World!" << endl;