![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Windows 踩坑实录
文章平均质量分 60
在Windows开发过程中,遇到的各种困难级的bug解决思路总结
hellokandy
我总在牛A与牛C之间徘徊!
展开
-
【Debug】vs调试dump文件避坑指南
先说结论:1、文件版本一致性dmp、pdb、exe确保是同一版本,即使代码未做任何修改,重新编译生成的新版exe不能与旧版exe产生的dmp文件一起调试。2、符号文件位置dmp、pdb、exe最好放在同一目录下,方便设置vs设置符号文件(*.pdb)位置3、代码一致性尽量保证exe的源文件与上次发布exe的源文件一致为什么要确保dmp、pdb、exe版本的一致性?且往下看:正常调试dump文件是这样的:点击“使用 仅限本机 进行调试”后,会切换到崩溃点:但是!代码未做任何修改,重新编原创 2020-08-05 19:55:25 · 4087 阅读 · 1 评论 -
GetLastError() 返回值对照表
[0] -操作成功完成。[1] -功能错误。[2] -系统找不到指定的文件。[3] -系统找不到指定的路径。[4] -系统无法打开文件。[5] -拒绝访问。[6] -句柄无效。[7] -存储控制块被损坏。[8] -存储空间不足,无法处理此命令。[9] -存储控制块地址无效。[10] -环境错误。[11] -试图加载格式错误的程序。[12] -访问码无转载 2017-04-19 18:05:41 · 4936 阅读 · 0 评论 -
Google Chrome 未响应。是否立即重新启动?
不当的退出会造成 Google Chrome 无法启动。出现“Google Chrome 未响应。是否立即重新启动?”的错误。要解决这个问题:1、同时按住Windows旗帜键 + R键,调出Windows的“运行”窗口2、输入CMD,按Enter键3、输入taskkill /f /im chrome.exe,按Enter键4、重新打开Google Chrome原创 2017-02-23 09:52:48 · 12507 阅读 · 0 评论 -
项目 : error PRJ0002 : 错误的结果 31
使用VS2008编译,到最后总是提示:项目 : error PRJ0002 : 错误的结果 31 (从“C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe”返回)。解决方案:原创 2017-10-31 12:25:55 · 2495 阅读 · 0 评论 -
此页面上的脚本造成Web浏览器运行速度减慢。如果继续运行,您的计算机将可能停止响应。
访问者所使用的浏览器不能完全支持页面里的脚本,形成“脚本错误”。遇到“脚本错误”时一般会弹出一个非常难看的脚本运行错误警告窗口,而事实上,脚本错误并不会影响网站浏览,因此这一警告可谓多此一举。要关闭警告则可以在浏览器的工具菜单选择Internet选项,然后单击高级属性页。进入到浏览标签,并选中“禁止脚本调试”复选框,以后你就不会再收到这些警告了。建议您尝试进行以下操作:1、清除一下I原创 2017-12-28 13:48:11 · 78506 阅读 · 0 评论 -
正确解决 应用程序无法正常启动(0xc000007b)的问题
【问题背景】用vs2008写了一个MySql(MySQL的版本号:8.0.11.0)的测试程序,在搞定MySQL所需要的x64平台后,问题又来了:编译一切都好,就是在程序启动的时候报了下面这个错!【解决方案】1、网上找了很多资料,大多数都说是direct_x的问题,于是用360软件管家下了个dx9,再次编译运行,问题依旧!2、用 depends.exe 软件查看了 libmysql.dll 的依赖...原创 2018-05-25 17:05:11 · 69763 阅读 · 0 评论 -
远程连接失败,可能是TCPIP 上的 NetBIOS 已禁用
前几天因为无法跨网段访问MySQL数据库,所以无意间看到一篇关于因为NetBIOS被禁用而导致无法远程连接的文章解决方案:输入命令:net winsock reset catalog...原创 2018-09-18 16:38:07 · 5067 阅读 · 0 评论 -
Windows 如何知道电脑什么时候装的系统
打开cmd命令提示,输入:systeminfo原创 2018-12-08 12:54:04 · 519 阅读 · 0 评论 -
DLL 中 new CInternetSession 异常!
【问题分析】在new CInternetSession时出错的代码:m_pSession = new CInternetSession;if (m_pSession){ m_pSession->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 300); m_pHttpConn = m_pSession->GetHttpConnec...原创 2018-12-21 17:30:40 · 647 阅读 · 0 评论 -
test dword ptr [eax],eax ; probe page. 是怎么回事?
【问题描述】编译时没有错误,但是调试或者运行时程序就报错了!一脸懵逼~~debug调试提示:xxx.exe 中的 0x00e731d7 处未处理的异常: 0xC00000FD: Stack overflow原来是栈溢出了!【问题为何会出现】局部变量的申请空间是存放于栈中,windows里默认栈内存是1M,所以当申请空间大于1M时就会出现溢出错误。【解决方案...原创 2019-04-04 14:34:49 · 5645 阅读 · 1 评论 -
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
一个容易被忽视的地方,引发了标题所属的错误!详见代码:#include "stdafx.h"#include <time.h>#include <string>//std::string time2string(){ time_t t = time(NULL); char buf[32]; int size = sizeof(buf);//32 s...原创 2019-05-21 11:31:38 · 435 阅读 · 0 评论 -
warning C4005]ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义 winsock.h(460) : 参见“AF_IPX”的前一个定义
【问题描述】在编译socket相关代码时,提示下面这样的错误(这只是其中第一行错误):ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义; winsock2.h(460) : 参见“AF_IPX”的前一个定义【原因】windows.h头文件中已经包含有winsock.h,winsock.h和winsock2.h定义了一样的宏。【解...原创 2019-08-27 15:05:04 · 2012 阅读 · 0 评论 -
namespace "ATL" 没有成员 AtlGetCommCtrlVersion
vs工程使用了wtl-80,提示 namespace "ATL" 没有成员 AtlGetCommCtrlVersion解决方案:在atlapp.h文件里面,加入下面的代码// General DLL Version Helpers#pragma warning(push)#pragma warning(disable : 4191) // 'type cast' : unsafe c...原创 2019-09-17 17:01:29 · 1758 阅读 · 0 评论 -
Win7 解决telnet不是内部或外部命令的方案!
telnet在win7下默认是不开启的,所以需要手动开启。首先点击开始菜单,找到控制面板项,点击进入:点击“打开或关闭Windows功能”,弹出右边的窗口,然后勾选“Telnet 客户端”,确定。稍等一下,等Windows配置生效。原创 2017-03-29 18:40:14 · 2699 阅读 · 0 评论 -
Adobe Flash Player 报错(Error #2044)
最近在项目中,需要用到flashplayer进行flash的播放,但是长时间的播放之后,弹出下面这个提示窗口:网上说是FlashPlayer的版本导致,解决办法是先卸载掉本机的FlashPlayer,再安装之前版本的FlashPlayer原创 2017-03-30 10:48:57 · 4141 阅读 · 2 评论 -
【Debug】Expression: ("Incorrect format specifier", 0)
_vsnwprintf_s 在遇到%的时候,出现了Expression: ("Incorrect format specifier", 0)的提示错误!测试代码如下:#include #include //printLogWvoid printLogW(const wchar_t* szLog, ...){ wchar_t cMsg[5120]; ::me原创 2017-03-01 16:36:24 · 4472 阅读 · 0 评论 -
【Debug】“return HeapAlloc(_crtheap, 0, size ? size : 1);
【错误提示】出现“触发xx断点……”或者定位到代码“return HeapAlloc(_crtheap, 0, size ? size : 1);”错误【问题解析】HeapAlloc是一个Windows API函数。它用来在指定的堆上分配内存,并且分配后的内存不可移动。出现该错误的大部分原因:在一个被调函数里面,指针变量使用了new分配堆空间,但函数结束返回的时候没有释放。在主函数原创 2016-07-30 14:40:54 · 2379 阅读 · 0 评论 -
【Debug】CVTRES : fatal error CVT1100: duplicate resource. type:MANIFEST
背景说明:VC工程(*.dsw或者*.dsp)通过VS2008转换后,编译时出现错误提示:CVTRES : fatal error CVT1100: duplicate resource. type:MANIFEST解决办法:打开“xxx.rc”文件,找到【IDR_MANIFEST ...... "xxx.manifest"】这行。注释掉,再重新编译,ok~原创 2016-07-28 11:18:17 · 734 阅读 · 0 评论 -
【Debug】error RC1015: cannot open include file 'atlres.h'
问题描述:WTL程序出现:error RC1015: cannot open include file 'atlres.h'解决问题:1、WTL工程属性 > 配置属性 > C/C++ > 常规 > 附加包含目录,添加WTL的Include目录2、WTL工程属性 > 配置属性 > 资源 > 常规 > 附加包含目录,添加WTL的Include目录原创 2016-07-27 17:10:36 · 955 阅读 · 0 评论 -
【Debug】双击cpp文件无法直接打开,提示“向程序发送命令时出现问题”
打开注册表编辑器,将[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\DDECache\VisualStudio.9.0\system]表项下的windowsclassname和windowname的两个键值由原来的键值修改为DDEHandler。原创 2016-06-19 11:16:04 · 3398 阅读 · 1 评论 -
【Debug】The value of ESP was not properly saved across a function call.
调用DLL函数,出现错误:Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a原创 2016-07-15 11:56:21 · 932 阅读 · 0 评论 -
【Debug】WTL 'uicc.exe' 不是内部或外部命令,也不是可运行的程序
新建WTL项目时,勾选了Ribbon选项,然后编译的时候提示:1>'uicc.exe' 不是内部或外部命令,也不是可运行的程序。网上查了一下,是没有安装win7 sdk。The Windows SDK v7.0A which comes with Visual Studio 2010 is not the full Windows SDK.Among other things, it原创 2016-06-18 23:57:57 · 1700 阅读 · 0 评论 -
【Debug】1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new
如果在编译MFC程序的时候出现下列及类似的错误:1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义1>uafxcwd.lib(afxmem.obj) : error LNK2005:原创 2016-05-29 01:36:35 · 583 阅读 · 0 评论 -
【Debug】GetVersionEx被声明为已否决
背景:在vs2013中使用GetVersionEx时,编译提示:error C4996 : 'GetVersionExW' : 被声明为已否决解决方案:1、项目->属性->C / C++->常规->sdl检查,选择“否”2、#pragmawarning(disable: 4996)原创 2016-03-05 00:04:21 · 16427 阅读 · 0 评论 -
【Debug】 error LNK2019: 无法解析的外部符号 _VerQueryValueW@16
【错误提示】error LNK2019: 无法解析的外部符号 _VerQueryValueW@16,error LNK2019: 无法解析的外部符号 _GetFileVersionInfoW@16,error LNK2019: 无法解析的外部符号 _GetFileVersionInfoSizeW@8,【分析原因】这几个API都是查询版本有关的函数,提示“无法解析的外原创 2016-08-13 13:23:11 · 5765 阅读 · 0 评论 -
【Debug】fatal error C1083: 无法打开预编译头文件
【问题描述】使用VS编译时,出现“fatal error C1083: 无法打开预编译头文件”【解决方案】检查在VS里面的 stdafx.cpp 文件属性,右键--->>属性,预编译头选“创建”,其它cpp文件选“使用”。如果这样设置后,还是有错误,重新生成解决方案。或者关闭VS,手动删除临时的中间文件,再次打开VS进行编译!【原因分析】原创 2016-11-30 11:40:00 · 2176 阅读 · 0 评论 -
【Debug】无法定位序数9965于动态链接库mfc90u.dll上
【错误提示】无法定位序数9965于动态链接库mfc90u.dll上【解决方案】项目 右键属性 -> 配置属性 -> 常规 -> MFC的使用 --> 在静态中使用MFC或者,把需要的DLL的一起打包,DLL路径:D:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC9原创 2016-11-23 18:36:02 · 5147 阅读 · 0 评论 -
【Debug】LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
重装了系统(之前win10,现在win7),重新编译VS2010项目,提示下面错误:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏。据说,更新了系统,打了补丁也可能会出现同样的提示错误!【解决方案】第一步:打开项目属性页,“清单工具”-->“输入和输出”-->“嵌入清单”,改为“否”。如下图所示:重新编译项目,原创 2016-12-22 18:15:35 · 812 阅读 · 0 评论 -
【Debug】不能实例化抽象类
A类继承于B类(抽象类,只有接口),但是没有对B类的接口进行实现,就会提示:不能实例化抽象类。比如下面的代码://class IEventParser{ virtual void processEvent(int type, std::string json) = 0; virtual void processEvent(int type, std::string json, vo原创 2017-01-10 10:42:27 · 1161 阅读 · 0 评论 -
【Debug】warning C4190:有指定的 C 链接,但返回了与 C 不兼容的 UDT
导出的函数中需要返回结构体数据,如下结构体:typedef struct tagLoginData{ int errCode;//返回码 std::string description;//返回码描述}LOGIN_DATA, *PLOGIN_DATA;如果使用下面这种定义方式,将出现C4190的提示错误:extern "C" LOGIN_DATA func ();原创 2017-01-06 11:04:19 · 9440 阅读 · 0 评论 -
【Debug】fatal error LNK1241: 已指定资源文件
【问题背景】两个静态库A和B,都添加了资源Version。B库中包含了A库(附加依赖项里面添加了A.lib),编译的时候提示:fatal error LNK1241: 已指定资源文件。【解决方案】去掉了A库中的资源,重新编译即可。【原因分析】在编译器对B库进行编译的时候,同时链接了A库的资源,导致资源文件发生冲突。原创 2016-12-08 18:27:34 · 3007 阅读 · 0 评论 -
【Debug】_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
首先,需要知道的是:_BLOCK_TYPE_IS_VALID宏,是用来检测这个内存块在当前堆上是否有效。 一般而言,只有使用new或者malloc申请的内存是位于堆上面,且程序不会自动清理。所以需要注意的是:new和delete,malloc和free都是成对的使用。既然出现了有关“堆”的错误,所以首先想到的就是,new和delete有没有成对的使用。下面的测试代码就会出现错误提原创 2016-07-30 14:57:07 · 1268 阅读 · 0 评论