error warning

(持续更新)

0、错误排查

错误排序,默认;(显示列基本上偶人够了)

然后从第一个查起来

说明:仔细看看,会有问题错误的原因;

文件:错误所在文件

行:如果右显示会直接调到你的错误代码行。

1、link2019 

就是找不到,链接出问题;一般是外部别的工程找不到相关内容。

这里有这个错误,是由于项目依赖导致的。(我这里原因是

(1)看依赖项目(切换生成顺序)

(2)找到第一个,从第一个开始编译。

(工程配种中莫名加入别的工程中的文件)

直接还原

(3)单独编译改工程

(4)全部编译(ok)

1、error C1189

错误    1    error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]    c:\program files (x86)\microsoft visual studio 12.0\vc\atlmfc\include\afx.h    24    1    09_Win32_to_MFC


解决方法1:

头文件中加

#define _AFXDLL

方法2 右键工程-属性-常规-MFC使用 -静态使用MFC

AdxDll --- MFC Dll

2、error C2678

问题描述:自定义结构体塞到vector中遍历时

原因:1、未重载

  bool operator==(const St& data)const;

2、遍历中参数第二个参数写错,类型是St

3、调试串行

(PS:遇到好多次了………最近又恶心到我了)

现象:调试时无法跳转到指定函数或者调试位置。

原因:大多数人说是内存紊乱导致,我认为是生成pdb错误导致,pdb主要是用于调试的。

生成错误的原因极有可能是和文件格式有关。

解决方案:

1、代码黏贴到notepad++中,全选,保存为ANSI,另存文件;删除原文件,进行替换;(可能需要多次尝试,或者试着转为ANSI)

2、关闭程序,重新打开

3、关闭电脑,清理下,重新打开

强烈怀疑这个警告有关

警告	1	warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失	

4、C4819

C4819

C4819

这个抄下来

解决办法
1、如果调用的库为C语言,增加extern "C"    
extern表明变量或函数是extern类型,“C”表明变量和函数是按照C语言方式编译和连接的。
2、修改字符编码格式
(1)单击“工具”|“自定义”命令,弹出“自定义”对话框。
(2)单击“命令”标签,进入“命令”选项卡。
(3)在“菜单栏”下拉列表中,选择“文件”选项。
(4)单击“添加命令”按钮,弹出“添加命令”对话框。
(5)在“类别”列表中,选择“文件”选项;在“命令”列表中,选择“高级保存选项”选项。
(6)单击“确定”按钮,关闭“添加命令”对话框。
(7)选中“控件”列表中的“高级保存选项”选项,单击“上移”或者“下移”按钮,调整该命令的位置。
(8)单击“关闭”按钮,完成“高级保存选项”命令的添加操作。
(9)打开“文件”菜单下的“高级保存选项”,设置编码 Unicode(utf-8带签名)- 代码页 65001 

5、不一致的行尾

不一致的行尾

编码和行尾

1、S中最常见的就是在自动补全的switch语句中default:后面的换行符与其他地方的不一样

6、无法命中断点

1、改属性

2、改文件格式

        今天2024.1.18又遇到这个了。原因嘛,很明显,就是调试信息和代码不匹配。

其实从前天晚上开始就出现类似的调试串行的问题。基本上都是文件格式的问题,导致生成的调试信息无法和你的代码匹配。你可以测试下,关闭电脑,重启打开VS只要你打开的对应文件(之前是打开的),一定会提示文件格式不对。

        改文件格式办法。高级保存选项。 C4819 解决方法类同。

3、自己秀逗了

        修改的文件不是改工程的,SVN另一分支的

4、强行打断点调试

使用 

__debugbreak();

7、C2143

现象,指向的是一类,但是当前类没错

解决方案:

查找该类所在头文件的调用,上一行的头文件中的类,最后面缺少分号

8、Link1103

错误    1    error LNK1103: 调试信息损坏;请重新编译模块    E:\d\……\stdafx.obj
        再次点击生成即可


9、error MSB8020

比如应该用VS2017你用的是VS2013

10、_MSC_VER

        _MSC_VER是微软公司推出的C/C++编译器在ANSI/ISO C99标准之外扩展的宏定义,用来定义当前微软公司自己的编译器的主版本。

MS VC++ 16.0 _MSC_VER = 1928 (Visual Studio 2019)

MS VC++ 15.0 _MSC_VER = 1910 (Visual Studio 2017)

MS VC++ 14.0 _MSC_VER = 1900 (Visual Studio 2015)

MS VC++ 12.0 _MSC_VER = 1800 (VisualStudio 2013)

MS VC++ 11.0 _MSC_VER = 1700 (VisualStudio 2012)

MS VC++ 10.0 _MSC_VER = 1600(VisualStudio 2010)

MS VC++ 9.0 _MSC_VER = 1500(VisualStudio 2008)

MS VC++ 8.0 _MSC_VER = 1400(VisualStudio 2005)

MS VC++ 7.1 _MSC_VER = 1310(VisualStudio 2003)

MS VC++ 7.0 _MSC_VER = 1300(VisualStudio .NET)

MS VC++ 6.0 _MSC_VER = 1200(VisualStudio 98)

MS VC++ 5.0 _MSC_VER = 1100(VisualStudio 97)

其中MS VC++ 14.0表示Visual C++的版本为14.0,后面括号中的Visual Studio 2015,表明该VC++包含在微软开发工具Visual Studio 2015中

11、LNK2038    

严重性    代码    说明    项目    文件    行
Wm3Lib.lib(Wm3Main.obj) :错误    LNK2038    检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”(cpp.obj 中)    pro1    path\pro2.lib(cpp2.obj)    1

obj:是目标文件,源程序编译后的产物

源代码 编译后 链接到的 cpp2 生成的lib文件的工具集出错,需要编译pro2工程(我这里的工程工程名的相关内容)

12、C1061

   代码块的嵌套超过 128 嵌套级的限制,简言之ifelse太多了 建议使用map或者list

13、C4312

        官方链接

        自己是int* 的指针转 void *  宝的问题,简单来说就是强转存储数据空间大小不一致导致的。

只建议小转大,能用引用就尽量用引用,减少用指针。

// 看 mnSectIndex的使用	
StPropertyData(const CString& cstrName, StValueType typeValue, void* pValue, int nPrecision = 10,
		PropertyGridType typeWnd = EPGT_Edit, bool bEnable = true, double dMin = -DBL_MAX, double dMax = DBL_MAX, bool bRefresh = false);
	
StPropertyData data(_T("xhg"), EVT_int, &mnSectIndex, 0, EPGT_Combox);

14、MSB8031

错误    1    error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See for more information.    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets    376

缺东西 安装这个

15、C3646

原因: 未知重写说明符

情况 : BCG的Dlg中使用了 MFC派生的的Dlg中有CMFCColorPickerCtrl。

清理重编,从第一个别处问题解决;包含头文件调整顺序,放到BCG派生的的.ccp

16、LNK1104

介绍的很详细 按照这个来就行,我的问题如下,重新切换编译一下就与Unicode版本,再编译就有该文件了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焰川

微信 2936729162

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值