VS2010 VC++控制台程序调试结果怎么一闪而过
- 格式:docx
- 大小:16.25 KB
- 文档页数:1
解决c++编程中结果一闪而过的方法介绍Windows 环境下,直接双击(如果您设置了单击打开,那就是单击)C 或 C++(简称 C/C++)程序,或者直接在某些集成开发环境中(如Dev-C++)编译运行 C/C++ 程序,会出现程序一闪而过或者程序接收了输入后直接退出的现象,导致看不到运行结果。
这不是程序的问题,而是因为程序运行结束,自动关闭了运行窗口。
解决办法有如下几种:1.先运行 Windows 下的MS-DOS(对于Windows 98等较老的 Windows 系统)或者“命令提示符”(对于Windows XP等较新的 Windows 系统),然后进入您想运行的 C/C++ 程序所在的目录。
假设该程序位于 D 盘的 cprog 目录下,依次输入以下内容就可以进入该目录:D:cd cprog接着输入该程序的名字,按回车,该程序就会运行起来。
假设该程序的名字为 test.exe,我们可以这样输入:test其实,不用进入 cprog 也可以运行 test,输入如下:D:\cprog\test2.第一种办法够简单吧?不过这第二种办法可更简单哦!在您想要暂停的地方加上system("pause");就可以使 C/C++ 程序暂停。
不过,这个办法奏效的前提是系统中必须存在pause这个命令。
此外,还需要包含标准头文件stdlib.h(对于 C)或者cstdlib(对于 C++)。
例如:#include <stdio.h>#include <stdlib.h>int main(void){printf("I need a pause here.\n");system("pause");printf("And here too.\n");system("pause");return 0;}如果您的系统中没有 pause 这个命令,导致不能使用 system("pause"); 来暂停,请参考第三种方法。
VS2010DirectX11SDKWindowsSDK编程过程中的错误异常解决⽅案记录ID3DBlob 未声明的标记符 undefined signalID3DBlob 定义在 D3DCommon.h 中, 但是使⽤ vs2010 & DirectX11 联合开发时, D3DCommon.h 会有两份, 如我的环境是:C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\D3DCommon.hD:\Program Files\Microsoft DirectX SDK (June 2010)\Include\D3Dcommon.h这样, 即使在项⽬中有包含 d3dx11.h (包含 D3DCommon.h) 也不能正确进⾏编译, 需要将 DirectX11 sdk 包含⽬录在 Windonws sdk 的前⾯, 如:D3DCOMPILE_ENABLE_STRICTNESS 未声明标记符D3DX11CompileFromFile() 创建加载并编译 shader⽂件时需要⽤到的 shaderFlags , 定义在 D3DCompiler.h 中, 需要 includexnamath.h 报错: 在标识符“XMConvertToRadians”的前⾯如下报错:1>d:\program files\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C2146: 语法错误: 缺少“;”(在标识符“XMConvertToRadians”的前⾯)1>d:\program files\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C2433: “FLOAT”: 不允许在数据声明中使⽤“__forceinline”1>d:\program files\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C4430: 缺少类型说明符 - 假定为 int。
一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。
先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。
一般显卡的刷新周期是1/80秒左右,具体数字可以自己设置的。
这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个刷新周期内完成,那么给人的视觉感受就是,先看到只有背景色的图像,然后看到画上内容的图像,这样就会感觉闪烁了。
解决方法:尽量快的输出图像,使输出在一个刷新周期内完成,如果输出内容很多比较慢,那么采用内存缓冲的方法,先把要输出的内容在内存准备好,然后一次输出到显存。
要知道一次API 调用一般可以在一个刷新周期内完成。
对于GDI,用创建内存DC的方法就可以了原因二:复杂的界面有多层窗口组成,当windows在窗口改变大小的时候是先重画父窗口,然后重画子窗口,子父窗口重画的过程一般无法在一个刷新周期内完成,所以会呈现闪烁。
我们知道父窗口上被子窗口挡住的部分其实没必要重画的解决方法:给窗口加个风格WS_CLIPCHILDREN ,这样父窗口上被子窗口挡住的部分就不会重画了。
如果同级窗口之间有重叠,那么需要再加上WS_CLIPSIBLINGS 风格原因三:有时候需要在窗口上使用一些控件,比如IE,当你的窗口改变大小的时候IE会闪烁,即使你有了WS_CLIPCHILDREN也没用。
原因在于窗口的类风格有CS_HREDRAW 或者CS_VREDRAW,这两个风格表示窗口在宽度或者高度变化的时候重画,但是这样就会引起IE闪烁解决方法:注册窗口类的时候不要使用这两个风格,如果窗口需要在改变大小的时候重画,那么可以在WM_SIZE的时候调用RedrawWindow。
原因四:界面上窗口很多,而且改变大小时很多窗口都要移动和改变大小,如果使用MoveWindow 或者SetWindowPos两个API来改变窗口的大小和位置,由于他们是等待窗口重画完成后才返回,所以过程很慢,这样视觉效果就可能会闪烁。
关于VFP连编后运行程序一闪而过的解决方法[日期:2006-06-05] 来源:作者:[字体:大中小] 笔者在两年多的新闻组生活中,曾数十次遇到过初学者对VFP的表单窗口属性所提出的问题,特别是"为何系统编译后运行时一闪而过"的问题,更是被频繁地提出。
现根据我的经验进行一下总结,以帮助初学者打掉这只拦路虎。
其实,这个问题之所以被频繁地提出,并非是由于初学者的理解能力有问题,而实在是VFP的设计混乱所致,以至于造成初学者理解上的混乱。
笔者曾在"济南万千"的"软件、编程、数据库"新闻组就此问题发过"窗口问题到此为止"的帖子,反响很大,现根据该帖进行整理,修正补足该帖中的一些不准确之处及遗漏。
本文所提"表单窗口属性",是指那些不但影响表单本身的特征(例如长宽等),而且对表单之外、项目之中的其它"元件"有影响的表单属性,它们包括如下三个:[list=a] 属性意义可选值(黑体为默认值)DeskTop 指定表单是否包含在VFP主窗口中 F./.T.WindowType 指定表单对象运行时的动作 0-无模式/1-模式ShowWindow 指定在创建过程中表单窗口显示表单或工具栏0-在屏幕中/1-在顶层表单中/3-做为顶层表单[/list]下面针对上述表单属性以及VFP中"桌面(DeskTop)、屏幕(Screen)、表单(Form)"等概念谈一谈我的理解。
正因为VFP在此方面的设计混乱,也就决定了我不能系统地、有条理地分析这些问题,我做的只能是阐述一些事实。
1.表单是一个对象,外观表现上是一个窗口。
VFP的主窗口也可以说是一个"表单"对象,它有一个固定的名字叫"_Screen","_Screen"是一个特殊的表单对象;2."ShowWindow"是规定表单在"显示方面的从属关系"的属性ShowWindow属性实际上仅有两种选择:"作为顶层表单"与"在顶层表单中"。
完美解决cmd命令控制台窗⼝运⾏后就⼀闪⽽过消失的问
题⽅法介绍
CMD命令窗⼝在⼀些特殊情况时我们会⽤到,如PING下看⽹络通不通。
在CMD窗⼝⾥运⾏命令如磁盘格式转换,在开始运⾏输⼊CMD回车后,CMD命令⿊框框出来闪⼀下就消失不见了的问题可以参考下下⾯的解决⽅法。
⼀、⾸先查看C:\WINDOWS\SYSTEM32下的CMD.EXE是否存在,⽂件⽇期是否正常;
检测结果为正常,与其他系统⽂件⽇期相同,应该不是这个问题。
⼆、再查看系统的环境变量,path是否包含如下路径:%SystemRoot%\system32;%SystemRoot%;
查看后发现存在(如果不存在就需加上)
三、看来还不是在上⾯的两个常见问题,应该是注册表被修改过。
最后终于找到了解决办法:
注册表:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun⾥的值清空,不能是空格哦!(就是没有数值,⽽⼀闪⽽过可能是EXIST,把他清除即可。
)
四,如果还是不⾏就⽤ cmd /k 来试试吧,例如在“运⾏”窗⼝中输⼊“cmd /k ipconfig /all” 。
VC++/VS2010 Win32控制台程序运行结束DOS/dos窗口立刻消失/
一闪而过的解决方法整理
1)在main()函数的末尾return 0前加一个system("pause"); //首选这个吧,挺好用的,这个是同事传授给我的奥
2)非调试状态下运行,直接按按Ctrl+F5;如果按F5调试的话,就会出现一闪而过的情况,但该方法不适用于生成的exe文件;//这个用起来比较方便
3) 给程序加一个任务,即定义一个内联函数inline void keep_window_open(char ch;cin>>ch;),然后在mian函数末尾加上keep_Window_open();这个方法是最有效也是最常用的,网上很多方法原理都类似于此,这是C++之父推荐的方法。
具体原因我不知晓。
4)其他方法,如设置断点,单步调试等。
/
(5) int main()
{
char c;
c=getchar();//
.........................
return 0;
}
加上getchar(),在你没输入之前是不会消失。
公司需要做一个串口调试软件,和普通的串口助手有些不同,在开发过程中遇到了一些问题,这个文档是问题和解决方法的总结,还有在解决问题时查询的一些知识性的东西,文档是笔记性质的,比较乱,希望对大家有帮助。
VS2010 尝试运行项目时出错:无法启动调试两个解决方法:1) 打开项目属性,选择调试选项卡,将“启用非托管代码调试”一项钩上。
2) 打开项目属性,选择调试选项卡,将“启用Visual Studio宿主进程“一项钩掉。
C#中在窗体1中单击按钮打开窗体2,出错原因是ob_FrmCom.show应该是大写的ob_FrmCom.Show误双击控件生成的代码如何删掉?双击错误列表的提示,跳转到窗体的定义文件中,只要将带蓝线的的那一整行删掉,然后保存生成一次就可以了!问题:Windows已在“xxx.exe”中触发了一个断点。
其原因可能是堆被破坏,这说明xxx.exe中或它所加载的任何DLL中有Bug。
原因也可能是用户在xxx.exe具有焦点时按下F12.输出窗口可能提供了更多诊断信息。
原因:1. 内存越界,比如“数组越界”、“释放已经释放掉的内存”、“共享内存引发的问题”、“释放野指针的问题”等。
2. 用到的第三方库版本不一致,比如“VS2010用到VS2013生成的DLL”、“Debug模式下用了Release模式下生成的库”、“代码生成中的MDD和MD”,可能还有其他第三方库的版本不一致问题。
如果之前没有这样的错误,突然出现了,很可能是你不小心delete了一个野指针。
vs2010C#编程中删除一个控件和相关的能看见的代码后出现错误:当前上下文中不存在名称"…"(控件名称)关闭解决方案后重新打开就好了.c#如何连接两个字符串用vs2005的c#写网页,我定义了两个字符串,一个是yy="2008",另一个是mm="10",如何把两个字符串连起来变成"200810"?如果是简单的连接的话,用+就可以了。
调试vs2010里面的项目时,弹出了个无法启动程序的对话框,而且还是经常性的,
点击确定后,打开的那个IE浏览器既不显示内容又不能关闭,只能通过任务管理器结束任务关闭浏览器窗口。
解决方法如下:
1) 在开始菜单的运行里面输入“regedit”命令,打开“注册表编辑器”
2) 在注册表中找到“我的电脑
/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Explorer/MAIN”目录,右键点击MAIN,
选择“新建àDWORD值(D)”,新建一个名为TabProcGrowth 值为0的项。
3) 按F5刷新即可。
但是,这样虽然解决无法启动程序的问题,随之而来了一个新问题——找不到元素:
解决方法如下:
一、开始---运行---输入regedit,回车,打开注册表
HKEY_LOCAL_MACHINE\SOFTWARE\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\C urrentVersion\App Paths 先删除 iexplore.exe项,再右击App Paths 新建一个项(k)命名为:iexplore.exe ,再右击iexplore.exe 项新建一个字符串值,命名为path 、值是:
C:\Program Files\Internet Explorer ,然后确定
二、关闭vs2010
三、重启vs2010。
VS2010编译MFC程序出错的原因在已经安装了VS2008的计算机上安装VS2010,用VS2010新建一个MFC程序,编译都通不过,错误如下:1> stdafx.cpp1>d:/program files/microsoft visual studio 10.0/vc/atlmfc/include/afxglobals.h(375): error C2143: syntax error : missing ';' before '*'1>d:/program files/microsoft visual studio 10.0/vc/atlmfc/include/afxglobals.h(375): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int1>d:/program files/microsoft visual studio 10.0/vc/atlmfc/include/afxglobals.h(375): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int1>d:/program files/microsoft visual studio 10.0/vc/atlmfc/include/afxglobals.h(375): warning C4183: 'GetITaskbarList3': missing return type; assumed to be a member function returning 'int'1>d:/program files/microsoft visual studio 10.0/vc/atlmfc/include/afxglobals.h(413): error C2143: syntax error : missing ';' before '*'1>d:/program files/microsoft visual studio 10.0/vc/atlmfc/include/afxglobals.h(413): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int1>d:/program files/microsoft visual studio 10.0/vc/atlmfc/include/afxglobals.h(413): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========查看错误文件,发现ITaskbarList3没有定义,出现这种问题最大的可能就是包含目录的问题。
1.检测到有潜在危险的 Request.Form 值2.“在没有任何数据时进行无效的读取尝试”解决办法3.数据为空。
不能对空值调用此方法或属性。
4.阅读器关闭时 FieldCount 的尝试无效5.未能映射路径6.Unreachable code detected7.索引超出范围。
必须为非负值并小于集合大小8.数据为空。
不能对空值调用此方法或属性9.数据源不支持服务器端的数据分页10.对象名'***** '无效11.在建立与服务器的连接时出错。
在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。
(provider: 命名管道提供程序,error: 40 - 无法打开到 SQL Server 的连接) 12.SqlDateTime 溢出。
必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间。
13.出现-------表示“属性”,此处应为“方法”14.未能从程序集“DAL, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null”中加载类型“DAL.SqlHelper”。
15.为过程或函数指定的参数太多16.无法启动调试,绑定句柄无效17.Unable to debugging on the web server.Debug failed because integrated windows authentication is not enable18.Automation 操作中文件名或类名未找到: 'RegExp'19.System.NullReferenceException: 未将对象引用设置到对象的实例。
20.错误 1718。
文件被数字签名策略拒绝(安装vs2005sp1时)21.vs2005不能从源文件模式切换到视图模式22.Validation of viewstate MAC failed23.Automation server can't create object"(Automation 服务器不能创建对)24.包加载失败25.Error spawning 'cmd.exe'.26.尝试读取或写入受保护的内存27.无法在证书存储区中找到清单签名证书28.该项目中不存在目标“ResolveKeySource”。