VS2013编程C++ 调试和生成老是出现问题,求救~~~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2013编程C++ 调试和生成老是出现问题,求救~~~相关的知识,希望对你有一定的参考价值。

代码没有问题,windows8.1 6位4系统,F5出现第一个图(过期),之后出现第二个图(无法启动),新手求救TAT,急,在线等

首先在Visual Studio里如果编译没过,那么这个提示就是正常的。
因为此项目已经过期表示你改了某些文件或项目配置或者上次没有编译成功,需要重新编译,否则调试会出错。
如果你上次编译通过了,按F5调试还是出现此提示,那可能就有问题了。
如果每次都出现这样的问题,那么这个解决方案很适合你。
当然解决方案不是选择“不要再显示此对话框”,这个只是不显示,但是每次调试还会先编译一次再启动。
我们要的是不要再编译了,直接启动调试吧。
首先此提示表示visual studio发现某些文件已经过期了,但是在编译的时候没有发现有文件被编译,连输出文件都没有重新生成。这不坑我吗。
好吧,其实它就是坑我的,这是Visual studio的bug。在Visual studio 2005上一般没有此问题,但是在Visual studio 2010上会出现此问题,其他版本暂时不清楚。
虽然是bug,但是也是可以解决的。
这个bug的原因是Visual studio 2010认为项目中的被删除的文件是过期的,比如项目中的某个头文件,这个头文件已经被删除,Visual studio 2010找不到这个头文件,就认为它是过期的,所以每次调试VS都认为项目是过期的,需要先编译。
那为什么编译时没有发现有文件被编译呢,原因是这个头文件没有被任何CPP或C文件使用,所以编译时没有发现有文件需要重新编译。
Bug的原理明白了,解决方案就是在VS项目中删除那个头文件。
一种笨方法就是在VS里一个个头文件点击打开,找到不能打开的。
一种聪明的方法是写脚本解析工程文件,然后验证文件是否存在。
还有一种方法是通过DebugView来查看。
下面介绍一个这种方案。
1. 打开devenv.exe.config文件(此文件在%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\ 或者 %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\里)
2. 在</configuration>这行前面添加
<system.diagnostics>
<switches>
<add name=”CPS” value=”4″ />
</switches>
</system.diagnostics>
3. 重新启动Visual Studio
4. 打开DbgView(下载地址:http://technet.microsoft.com/en-us/sysinternals/bb896647), 勾选:菜单-》Capture-》Capture Win32 和 菜单-》Capture-》Capture Events
5. 点击F5开始调试,出现提示“此项目已经过期”时停止
6. 在DbgView按ctrl+F窗口查找“not up to date”,查找到如:
[120] Project ‘D:\cache\test1\test1.vcxproj’ not up to date because build input ‘D:\CACHE\TEST1\FUN1.H’ is missing.
7. 此时就找到了关键文件FUN1.H,只要在工程中移除这个文件再编译一次就可以了。追问

大神看不懂哎……能不能QQ上告诉我一下,麻烦了 414931437

参考技术A 看下你项目中个项目文件(.h .cpp)的最后修改时间是否有不正常的。
检查下目录e:\Users\ConsoleApplication3\Debug追问

项目文件里找不到.cpp貌似根本没有生成,大神可否QQ联系下教我……414931437,因为我们上课用的VC6.0……

追答

你把项目文件发上来我看一下?

追问

#include

using namespace std;

int main()

cout << "Hello,world!" << endl;
return0;

这个吗……
大神QQ上说吧……因为我VS不会用基本上……

本回答被提问者采纳

新手学C++,用vs2010运行书上的一个实例时出现问题,求解~~

书上的实例是:
#include <iostream>

int main()

std::cout << "Hello World!\n";
return 0;

输入上面的代码后,我点了“启动调试(F5)”,结果失败了,出现如下提示信息:
1>------ 已启动生成: 项目: hello, 配置: Debug Win32 ------
1>生成启动时间为 2011/8/12 9:08:37。
1>InitializeBuildStatus:
1> 正在对“Debug\hello.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> 所有输出均为最新。
1> hello.cpp
1>c:\users\lenovo\documents\visual studio 2010\projects\hello\hello\hello.cpp(1): warning C4627: “#include <iostream>”: 在查找预编译头使用时跳过
1> 将指令添加到“StdAfx.h”或重新生成预编译头
1>c:\users\lenovo\documents\visual studio 2010\projects\hello\hello\hello.cpp(8): fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
1>
1>生成失败。
1>
1>已用时间 00:00:04.24
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
怎么回事啊?上火。。。
如4楼所说我选的是“Win32 控制台应用程序”,在这个项目下用一楼的办法成功运行了,然后按照2、4楼说的创建空项目,就不需要再加那条代码。
总之大家说的都对,我纠结到底把分给谁啊~~~
“Win32 控制台应用程序”和“空项目”有什么区别,多加的那个句子是什么意思?
我现在处于照葫芦画瓢的阶段,麻烦谁适当解释下吧,我酌情给分。。。

第一行加上: #include "stdafx.h"

补充回答:
因为你启用了预编译头文件,所以每个CPP文件第一行必须包含预编译头文件。如果你建立一个空的控制台工程,预编译头文件选项会被关闭,所以就不需要加这行。
参考技术A 你建立项目时有些问题,你选择Win32 控制台程序,在弹出的页面上,要勾选“空项目”就行了,然后再建立个cpp文件。

空项目就是,你选择Win32 控制台程序后,会弹出一个选项框,不要直接点确认,有下一步按钮,点一下,就会看到有“空项目”选项了
参考技术B 你在VS2010里面创健的是不是空项目,空项目我试过了没有问题,可能创健项目的时候有点小问题。
楼上那位说的应该是没错的。
参考技术C 一开始项目建的有问题

楼主去看看这个视频 百度搜一下 如鹏网 c语言也能干大事

以上是关于VS2013编程C++ 调试和生成老是出现问题,求救~~~的主要内容,如果未能解决你的问题,请参考以下文章

新手学C++,用vs2010运行书上的一个实例时出现问题,求解~~

VS2013 VS2015 VS2017调试出现无法启动iis express web服务器

c++编程题目,求1到N之间数字1出现的个数。程序不用写,告诉我规律就好,自己写的老是超时

求助,在VS2013环境里搭载QT老是出现模块计算机类型“X86”与目标计算机类型“x64”冲突

vs2010调试c++总是说此项目已经过期怎么办

VS2013,C++:未知的“线程 X 以代码 0 退出”