VS2008/2005MFC程序调试出现莫名错误:编译器可能需要更改配置(陆续更新)

我的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!!

把#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(注意:请确保已经安装Microsoft SQL Server Management Studio Express(SSMSE)

安装的时候注意实例名不要与现有实例重复

转自: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


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值