C ++:LINK:debug \ XXXXX.exe未找到或未由最后一个增量链接构建;执行完整链接

时间:2009-10-12 14:44:47

标签: c++ incremental-linking

使用visual studio 2008 SP1,
这一行:

LINK : debug\XXXXX.exe not found or not built by the last incremental link; performing full link
无论我做出多大的改变,每次编译项目时都会出现

可能是什么原因?

6 个答案:

答案 0 :(得分:13)

老问题,但是以防万一它仍然是一个问题(它是......)。

增量链接与生成清单文件不兼容(Proj选择>链接器>清单文件>生成清单:是)。实际上,生成清单会修改exe / dll,因此链接器必须进行完全链接。

有一些解决方法,有关详细信息: http://chadaustin.me/2009/05/incremental-linking-and-embedded-manifests/

临时(最简单/最快)的解决方案是在开发期间禁用清单生成,并在发布阶段再次启用它。虽然这会为应用程序禁用XP / Vista风格的gui(控件看起来像“经典模式”)。

答案 1 :(得分:5)

事实证明,如果我将/INCREMENTAL添加到链接器命令行,问题就会自行解决。尽管根据文档的默认行为是启用增量链接这一事实。

奇怪。

答案 2 :(得分:4)

真的在黑暗中拍摄,但......,

您是否将XXXXX.exe从其构建位置移动到其他位置?增量链接的重点是更改现有的exe。如果没有,那将很难......

另一个可能的原因是文件在构建后被更改(可能是通过其他工具)...

所有原因都列在the help item for /INCREMENTAL

  

此外,LINK执行完整   链接如果以下任何一项   情况发生:

     

增量状态(.ilk)文件是   失踪。 (LINK创建一个新的.ilk文件   为后续准备   增量链接。)

     

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

     

.exe或.dll输出文件是   丢失。

     

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

     

更改了LINK选项。最LINK   选项,在构建之间更改时,   引起一个完整的链接。

     

添加对象(.obj)文件或   删去。

     

使用。编译的对象   / Yu / Z7选项已更改。

答案 3 :(得分:3)

  1. 从Microsoft下载procmon
  2. 运行它,设置一个过滤器,以便您查找包含.exe名称的路径的访问权限。
  3. 做一个链接。
  4. 看看它遇到了什么麻烦 - 它是否找到它,是否在打开它时记录错误。 Procmon会记录每个文件的打开,读取,关闭等。如果出现错误,它会记录它。
  5. 还要确保它能找到.ilk文件 - 我认为它也需要它。

答案 4 :(得分:1)

(也在黑暗中)一个可能的原因是您使用引用__DATE__宏的项目范围的标头。但在这种情况下,你也会看到完整的重新编译(是吗?)

答案 5 :(得分:0)

就我而言,我昨天收到了这个错误。

VS将code generation > runtime Library设置为Multi-threaded Debug DLL (/MDd)而不是Multi-threaded Debug (/MTd)

如果我重新创建新项目,则会再次出现这种错误设置。我手动切换到/Mtd,然后没有错误发生。