【问题标题】:When debugging a visual c+ program, the file specified can't be executed调试visual c+程序时,指定的文件无法执行
【发布时间】:2016-06-14 11:21:19
【问题描述】:

我做了一个简单的hello world程序。我单击“开始调试”,窗口显示“项目已过期。您要构建它吗?”当我单击“是”时,下一个窗口显示“存在构建错误。您要继续并运行最后一次成功的构建吗?”。我再次选择是,它显示了这个窗口:(附截图)enter image description here

【问题讨论】:

  • 修复构建错误
  • 调试不再与源代码对应的可执行文件是什么意思?修复构建错误,然后调试!
  • 请看图片,我是初学者,所以我不知道如何修复构建错误。

标签: c++ debugging


【解决方案1】:

存在构建错误。是否要继续并运行上次成功的构建?

该问题的唯一正确答案是“否”。如果您单击“调试”,您显然想要调试源的 当前 版本,而不是与您在编辑器中看到的内容不匹配的陈旧旧版本。

在工具 → 选项 → 项目和解决方案 → 构建和运行中禁用此无意义的消息。对于“运行时,当项目过期时”,将其设置为“始终构建”。对于“运行时,发生构建或部署错误”,将其设置为“不启动”。

我想不出你为什么希望其他选项作为 默认 设置的原因。如果您想启动旧的、陈旧的构建,您始终可以手动执行。

我再次选择是,它显示这个窗口:“系统找不到指定的文件。”

这是一个愚蠢的设置的另一个原因。特别是第二个,当构建错误发生时控制运行行为。

发生的情况是,当您尝试构建项目时,第一步是执行 clean,这实际上意味着删除旧文件。随着旧文件的消失,它开始构建。构建失败,你得到一个错误。您要求它忽略错误并运行旧版本。可是等等!旧版本在构建开始时被删除,因此不再存在!

如果构建失败,请返回 IDE,修复错误,然后重新启动以重新构建。


奖励:您得到的构建错误是“fatal error C1010”,这是一个相当愚蠢的错误,对于不习惯 Visual Studio 的人来说可能会非常困惑。基本上,它告诉您的是,因为您使用的是预编译头文件(新项目的默认设置),所以每个源文件的第一行都需要包含您的预编译头文件。默认情况下,它被命名为stdafx.h,所以你的代码文件的第一行应该是:

#include "stdafx.h"

这应该在您包含系统标头<iostream> 之前。预编译的标头必须包含在文件的非常顶部,否则会出现构建错误。

如果你不喜欢这样,那么你可以关闭预编译头文件:

  1. 在解决方案资源管理器中右键单击您的项目,然后选择“属性”。
  2. 点击顶部的“配置”组合框并选择“所有配置”。
  3. 在树形视图中展开“C/C++”,然后选择“Precompiled Headers”。
  4. 将顶部选项“Precompiled Header”设置为“Not Using Precompiled Headers”。

【讨论】:

  • 谢谢。我一定会尝试的。
  • 是的,当我使用没有调试选项的启动时,它工作得很好。
【解决方案2】:

抱歉:您上次成功的构建已被删除 - 可能是由于尝试编译/链接。您需要先修复现有的源代码,然后再进行调试...

【讨论】:

  • 可能是下载中断了。我应该怎么做才能修复或重新安装它?
【解决方案3】:

对于许多用户来说,调试模式似乎缺少一些 .dll 文件。

你不需要为此运行调试模式,如果你的程序可以正常运行,那么让它运行。

我还可以看到您编写了 void main(),但在 C++ 中,好的语法是 int main() 并由 return 0; 指令终止。顺便说一句,请考虑在#include<iostream> 之类的库之间至少留一个空格。

【讨论】:

  • 可能是下载中断了。我应该怎么做才能修复或重新安装它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 2012-11-02
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多