VS2008/2005MFC程序调试出现莫名错误:编译器可能需要更改配置(陆续更新)
2012-11-27 13:54
519 查看
我的VS2008不知道是有bug还是自己的问题,很多时候变量定义后CTRL+F5运行却没反应,一定要“生成解决方案”下才行?
1、没有可用于当前位置的源代码
将工具->选项->调试->常规->去掉“要求源文件与原始版本完全匹配”复选框就OK
在解决方案资源管理器中右击解决方案->属性->通用属性->调试源文件。在不查找这些源文件对话框中查看是否有你想要调试的源文件,如果有就删除这一行,保存。
2、已触发了一个断点
VS2008再出怪现象:已触发了一个断点!!很是悲催:程序完全正常,在拖进来的List Control空间中右击添加control变量CListCtrl m_ctrListServerConnect;调试无奈的提示:已触发了一个断点,调试都无法进行,寻找答案无果,把m_ctrListServerConnect;涉及到的地方全部屏蔽,m_ctrListServerConnect;加了个s重新自己写了一遍,问题解决。
3、不能将参数 1 从“const char [10]”转换为“const wchar_t *”
CString str;
str.Format("Amount Remaining $ %.2f", m_Amt_Remaining);),
上VC6中上述代码没有问题,但在Visual stdio 2008中编译中有错误:
错误提示:
error C2664: “void ATL::CStringT::Format(const wchar_t *,...)”:不能将参数 1 从“const char [10]”转换为“const wchar_t *”
VS2008默认是UNICODE环境(当然你可以在项目属性中改成使用多字节字符集就可以啦)
所以把你所有字符串相关的操作都用_T() TEXT() 包含起来
str.Format(_T("Amount Remaining $%.2f",m_Amt_Remaining));
4、LINK : fatal error LNK1000: Internal error during IncrBuildImage
用下面的方法手工来改工程设置
项目(Project)->属性(Property)->链接器(Linker)->常规(General) 下面的“启用增量链接(Enable Incremental Linking)”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
选择项目,属性(Property pages)->配置属性(Configuration Properties) ->C/C++,修改“调试信息格式(Debug Information Format)”为“程序数据库(Program Database(/Zi))”即可。
参考资料:http://blog.csdn.net/xiangyunl/archive/2010/08/22/5830481.aspx
5、fatal error C1083: 无法打开包括文件:“afxcontrolbars.h”: No such file or directory!!
6、VC6.0向VS2008转换时出现的问题:消息映射:VS2008中消息映射的方法必须有返回类型,当然不一定是LRESULT
error C2440: 'static_cast' : cannot convert from 'void (__thiscall CSongserverView::* )(WPARAM,LPARAM)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
7、SQL Server2005 只有配置工具,而没有查询分析器、企业管理器的解决方法
其实只需要下载个Microsoft SQL Server Management Studio Express(SSMSE)
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796#RelatedDownloads
如果上述方法仍然不管用,那就很可能是下列原因了:
SQL server 2005 的不同版本需要操作系统也要相应的版本.
在运行的地方输入:SqlWb.exe或程序/sql server 2005/SQL Server Management Studio(注意:请确保已经安装[b]Microsoft
SQL Server Management Studio Express(SSMSE))[/b]
安装的时候注意实例名不要与现有实例重复
转自:http://blog.csdn.net/xintianyou_/article/details/7045712
8、Cstring等相关操作出现错误
错误 1 error C2440: “初始化”: 无法从“char [32]”转换为“ATL::CStringT<BaseType,StringTraits>”
错误 4 error C2665: “AfxMessageBox”: 2 个重载中没有一个可以转换所有参数类型
错误 3 error C2664: “int ATL::CStringT<BaseType,StringTraits>::Replace(wchar_t,wchar_t)”: 不能将参数 1 从“const char [2]”转换为“wchar_t”
错误 10 error C2440: “初始化”: 无法从“const char [4]”转换为“CString”
错误 13 error C2678: 二进制“+”: 没有找到接受“const char [2]”类型的左操作数的运算符(或没有可接受的转换)
上述几个错误都是字符集的问题,vc2008缺省的字符集是unicoide,因此
1. 把项目的字符集设置为:Use Multi-Byte Character Set (中文:使用多字节字符集)
更改方法:项目->具体在工程的属性->配置属性->常规->字符集->使用多字节字符集
2. 举例:也可以CString s = _T("abcdef");
9、Run-Time Check Failure #2 - Stack around the variable 'dlg_CUserManage' was corrupt
m_pMainWnd = &dlg错误解决方法
本身是个莫名其妙的错误,现象就是运行时连弹N个错误框,调试时到m_pMainWnd = &dlg这一句出现异常,而这一句其实是VC生成的。一般出现这种错误的原因是在工程的主窗口新添加了成员变量,只要REBUILD ALL一下,解决了吧。
我“清理”后,重新生成解决方案,然后运行程序,发现确实不出现这个错误了。
网上也有人说是,内存访问越界。内存访问越界的后果是:你的写入破坏了本不属于你的空间。
具体是什么原因导致该错误的发生,目前还是不清楚
10、VS2008 MFC程序打的断点在调试的时候无效,显示空心带个小锁的形状
1. 首先检查是否生成了调试信息,检查"属性"->"连接器"->"生产调试信息"是否设置正确。
2. 再检查调试的文件与源文件是否相符,这可能是因为源文件被修改了没有重新编译。如果不想重新编译则可以去掉选项:"工具"->选项"->"调试"->"要求源文件与原始版本完全匹配"。
3. 检查文件中是否有#line,如果#line混乱,则断点也不会起作用。
4. 网上有人建议删掉ncb文件,这也是一种解决方法,但没有使用过,不知道能否起作用。
我用过第二种方法
11、IE8正式版引发VS2005和VS2008添加变量向导出错的解决方案(MFC当前页发生脚本错误!!!)
运行命令:regedit,调出注册表定准:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones找到1000的项,如果不存在1000这一项的话,首先添加;在此项(1000)中添加一个DWORD值名称为1207,类型为REG_DWORD,数据为0x00000000,也就是0了.重新打开VS2005/2008
1、没有可用于当前位置的源代码
将工具->选项->调试->常规->去掉“要求源文件与原始版本完全匹配”复选框就OK
在解决方案资源管理器中右击解决方案->属性->通用属性->调试源文件。在不查找这些源文件对话框中查看是否有你想要调试的源文件,如果有就删除这一行,保存。
2、已触发了一个断点
VS2008再出怪现象:已触发了一个断点!!很是悲催:程序完全正常,在拖进来的List Control空间中右击添加control变量CListCtrl m_ctrListServerConnect;调试无奈的提示:已触发了一个断点,调试都无法进行,寻找答案无果,把m_ctrListServerConnect;涉及到的地方全部屏蔽,m_ctrListServerConnect;加了个s重新自己写了一遍,问题解决。
3、不能将参数 1 从“const char [10]”转换为“const wchar_t *”
CString str;
str.Format("Amount Remaining $ %.2f", m_Amt_Remaining);),
上VC6中上述代码没有问题,但在Visual stdio 2008中编译中有错误:
错误提示:
error C2664: “void ATL::CStringT::Format(const wchar_t *,...)”:不能将参数 1 从“const char [10]”转换为“const wchar_t *”
VS2008默认是UNICODE环境(当然你可以在项目属性中改成使用多字节字符集就可以啦)
所以把你所有字符串相关的操作都用_T() TEXT() 包含起来
str.Format(_T("Amount Remaining $%.2f",m_Amt_Remaining));
4、LINK : fatal error LNK1000: Internal error during IncrBuildImage
用下面的方法手工来改工程设置
项目(Project)->属性(Property)->链接器(Linker)->常规(General) 下面的“启用增量链接(Enable Incremental Linking)”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
选择项目,属性(Property pages)->配置属性(Configuration Properties) ->C/C++,修改“调试信息格式(Debug Information Format)”为“程序数据库(Program Database(/Zi))”即可。
参考资料:http://blog.csdn.net/xiangyunl/archive/2010/08/22/5830481.aspx
5、fatal error C1083: 无法打开包括文件:“afxcontrolbars.h”: No such file or directory!!
把#include <afxcontrolbars.h> 注掉,后面加一行 #define CWinAppEx CWinApp: 也即是如下的修改: //#include <afxcontrolbars.h> // MFC support for ribbons and control bars #define CWinAppEx CWinApp
6、VC6.0向VS2008转换时出现的问题:消息映射:VS2008中消息映射的方法必须有返回类型,当然不一定是LRESULT
error C2440: 'static_cast' : cannot convert from 'void (__thiscall CSongserverView::* )(WPARAM,LPARAM)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
应该是VC6项目迁移向高版本时发生的,VC6后消息的检查更为严格,以前在VC6下完全正常运行的消息映射在其它版本下编译不通过。 解决方法如下: 首先,把原来的消息函数返回值类型改为LRESULT,函数内可以随便写个return TRUE; 然后消息函数的参数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个参数是否用得到;最后,消息映射如ON_MESSAGE(WM_message,& OnMyMessage)
7、SQL Server2005 只有配置工具,而没有查询分析器、企业管理器的解决方法
其实只需要下载个Microsoft SQL Server Management Studio Express(SSMSE)
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796#RelatedDownloads
如果上述方法仍然不管用,那就很可能是下列原因了:
SQL server 2005 的不同版本需要操作系统也要相应的版本.
在运行的地方输入:SqlWb.exe或程序/sql server 2005/SQL Server Management Studio(注意:请确保已经安装[b]Microsoft
SQL Server Management Studio Express(SSMSE))[/b]
安装的时候注意实例名不要与现有实例重复
转自:http://blog.csdn.net/xintianyou_/article/details/7045712
8、Cstring等相关操作出现错误
错误 1 error C2440: “初始化”: 无法从“char [32]”转换为“ATL::CStringT<BaseType,StringTraits>”
错误 4 error C2665: “AfxMessageBox”: 2 个重载中没有一个可以转换所有参数类型
错误 3 error C2664: “int ATL::CStringT<BaseType,StringTraits>::Replace(wchar_t,wchar_t)”: 不能将参数 1 从“const char [2]”转换为“wchar_t”
错误 10 error C2440: “初始化”: 无法从“const char [4]”转换为“CString”
错误 13 error C2678: 二进制“+”: 没有找到接受“const char [2]”类型的左操作数的运算符(或没有可接受的转换)
上述几个错误都是字符集的问题,vc2008缺省的字符集是unicoide,因此
1. 把项目的字符集设置为:Use Multi-Byte Character Set (中文:使用多字节字符集)
更改方法:项目->具体在工程的属性->配置属性->常规->字符集->使用多字节字符集
2. 举例:也可以CString s = _T("abcdef");
9、Run-Time Check Failure #2 - Stack around the variable 'dlg_CUserManage' was corrupt
m_pMainWnd = &dlg错误解决方法
本身是个莫名其妙的错误,现象就是运行时连弹N个错误框,调试时到m_pMainWnd = &dlg这一句出现异常,而这一句其实是VC生成的。一般出现这种错误的原因是在工程的主窗口新添加了成员变量,只要REBUILD ALL一下,解决了吧。
我“清理”后,重新生成解决方案,然后运行程序,发现确实不出现这个错误了。
网上也有人说是,内存访问越界。内存访问越界的后果是:你的写入破坏了本不属于你的空间。
具体是什么原因导致该错误的发生,目前还是不清楚
10、VS2008 MFC程序打的断点在调试的时候无效,显示空心带个小锁的形状
1. 首先检查是否生成了调试信息,检查"属性"->"连接器"->"生产调试信息"是否设置正确。
2. 再检查调试的文件与源文件是否相符,这可能是因为源文件被修改了没有重新编译。如果不想重新编译则可以去掉选项:"工具"->选项"->"调试"->"要求源文件与原始版本完全匹配"。
3. 检查文件中是否有#line,如果#line混乱,则断点也不会起作用。
4. 网上有人建议删掉ncb文件,这也是一种解决方法,但没有使用过,不知道能否起作用。
我用过第二种方法
11、IE8正式版引发VS2005和VS2008添加变量向导出错的解决方案(MFC当前页发生脚本错误!!!)
运行命令:regedit,调出注册表定准:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones找到1000的项,如果不存在1000这一项的话,首先添加;在此项(1000)中添加一个DWORD值名称为1207,类型为REG_DWORD,数据为0x00000000,也就是0了.重新打开VS2005/2008
相关文章推荐
- VS2008编译的mfc程序在没有安装的机子上运行出现配置错误的问题
- 调试中出现:“没有找到MFC80UD.DLL"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题”错误提示
- VS2010调试程序出现错误:vc/atlmfc/include/atlcore.h(35): fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at le
- 配置scut协议生成器的时候需要配置iis,出现常见错误——Win7中IIS出现“HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
- 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
- warning MSB3245: 未能解析此引用。未能找到程序集“CemeteryBLL”。请检查磁盘上是否存在该程序集。 如果您的代码需要此引用,则可能出现编译错误。
- 配置DNS服务器详细过程及详解配置途中可能出现的错误
- 调试 ASP.NET 应用程序时出现"未将项目配置为进行调试"的错误信息
- 论try/catch的重要性,我们经常遇到代码出现无法调试的错误,程序退出的时候崩溃。这跟我们代码日常保护的习惯息息相关。
- 调试时,可能出现的错误及尝试解决办法
- T61P 安装Win7 出现 Windows update 当前无法检查更新,因为未运行服务。您可能需要重新启动计算机
- 程序内存不足,导致可能出现的错误有哪些?
- 显示可用的套打单据列表时发生错误:当前记录集不支持更新。这可能是提供程序的限制
- 调试经验总结-VC下的错误对话框(陆续更新5.5.2008)
- Notepad++一键配置python运行 & 可能出现的文件路径错误
- asp.net程序编译调试时偶尔出现访问被拒绝的错误
- 析构函数无法命中断点. 当前无法命中断点: 没有与此行关联的调试程序的目标代码类型的可执行代码. 可能的原因包括;条件编译, 编译器优化或者...
- WN7 上IIS7运行asp+access网站出现错误: ADODB.Connection 错误 '800a0e7a'未找到提供程序。该程序可能未正确安装
- eclipse Android更新SDK或重新配置adt后出现Error retrieving parent for item: No resource found 错误
- C#连接Access数据库,Update更新数据时出现“不能打开数据库,应用程序可能无法识别该数据库。。。”错误