《vc++常见调试错误代码》由会员分享,可在线阅读,更多相关《vc++常见调试错误代码(11页珍藏版)》请在金锄头文库上搜索。
1、VC+VC+常见调试错误代码常见调试错误代码-首先说下最常见的 link 错误处理办法:在创建 MFC 项目时, 不使用 MFC AppWizard 向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如 error LNK2001 错误, 典型的错误提示有:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain16msvcrtd.lib(crt
2、exew.obj) : error LNK2001: unresolved external symbol _WinMain16nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol _beginthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol _endthreadex下面介绍解决的方法:1. Windows 子系统设置错误, 提示:libcmtd.lib(crt0.obj) : error LNK2001
3、: unresolved external symbol _mainWindows 项目要使用 Windows 子系统, 而不是 Console, 可以这样设置:Project Settings 选择“Link“属性页,在 Project Options 中将/subsystem:console 改成/subsystem:windows2. Console 子系统设置错误, 提示:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain16控制台项目要使用 Console 子系统, 而不是 Windo
4、ws, 设置:Project Settings 选择“Link“属性页,在 Project Options 中将/subsystem:windows 改成/subsystem:console3. 程序入口设置错误, 提示:msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain16通常, MFC 项目的程序入口函数是 WinMain, 如果编译项目的Unicode 版本, 程序入口必须改为 wWinMainCRTStartup, 所以需要重新设置程序入口:Project Settings 选择“C
5、/C+“属性页,在 Category 中选择 Output,再在 Entry-point symbol 中填入 wWinMainCRTStartup, 即可4. 线程运行时库设置错误, 提示:nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol _beginthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol _endthreadex这是因为 MFC 要使用多线程时库, 需要更改设置:Project Sett
6、ings 选择“C/C+“属性页,在 Category 中选择 Code Generation,再在 Use run-time library 中选择 Debug Multithreaded 或者multithreaded其中,Single-Threaded 单线程静态链接库(release版本)Multithreaded 多线程静态链接库(release版本)multithreaded DLL 多线程动态链接库(release版本)Debug Single-Threaded 单线程静态链接库(debug版本)Debug Multithreaded 多线程静态链接库(debug版本)Debug
7、 Multithreaded DLL 多线程动态链接库(debug版本)单线程: 不需要多线程调用时, 多用在 DOS 环境下多线程: 可以并发运行静态库: 直接将库与程序 Link, 可以脱离 MFC 库运行动态库: 需要相应的 DLL 动态库, 程序才能运行release 版本: 正式发布时使用debug 版本: 调试阶段使用例如,当我们不在 MFC 创建的环境下(console appllication) ,使用 CString 类等等,那么就会出现 nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol
8、 _beginthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol _endthreadex 错误,这时可以按照上面的方法,设置 Code Generation 为 Debug Multithreaded,即可解决问题。补充:如何解决 LINK2005 错误在 Project-Setting-Link 中加上/FORCE:MULTIPLE-最常见的 20 种 VC+编译错误信息1、fatal error C1010: unexpected end of file while looking f
9、or precompiled header directive。寻找预编译头文件路径时遇到了不该遇到的文件尾。 (一般是没有#include “stdafx.h“)2、fatal error C1083: Cannot open include file: R.h: No such file or directory不能打开包含文件“R.h”:没有这样的文件或目录。3、error C2011: C: class type redefinition类“C”重定义。4、error C2018: unknown character 0xa3不认识的字符0xa3。 (一般是汉字或中文标点符号)5、er
10、ror C2057: expected constant expression希望是常量表达式。 (一般出现在 switch 语句的 case 分支中)6、error C2065: IDD_MYDIALOG : undeclared identifier“IDD_MYDIALOG”:未声明过的标识符。7、error C2082: redefinition of formal parameter bReset函数参数“bReset”在函数体中重定义。8、error C2143: syntax error: missing : before 句法错误:“”前缺少“;” 。9、error C2146
11、: syntax error : missing ; before identifier dc句法错误:在“dc”前丢了“;” 。10、error C2196: case value 69 already used值 69 已经用过。 (一般出现在 switch 语句的 case 分支中)11、error C2509: OnTimer : member function not declared in CHelloView成员函数“OnTimer”没有在“CHelloView”中声明。12、error C2511: reset: overloaded member function void
12、(int) not found in B重载的函数“void reset(int)”在类“B”中找不到。13、error C2555: B:f1: overriding virtual function differs from A:f1 only by return type or calling convention类 B 对类 A 中同名函数 f1 的重载仅根据返回值或调用约定上的区别。14、error C2660: SetTimer : function does not take 2 parameters“SetTimer”函数不传递 2 个参数。15、warning C4035:
13、f: no return value“f”的 return 语句没有返回值。16、warning C4553: = = : operator has no effect; did you intend =?没有效果的运算符“= =” ;是否改为“=”?17、warning C4700: local variable bReset used without having been initialized局部变量“bReset”没有初始化就使用。18、error C4716: CMyApp:InitInstance : must return a value“CMyApp:InitInstance
14、”函数必须返回一个值。19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing连接错误:不能打开 P1.exe 文件,以改写内容。 (一般是 P1.Exe 还在运行,未关闭)20、error LNK2001: unresolved external symbol “public: virtual _ _thiscall C:C(void)“连接时发现没有实现的外部符号(变量、函数等) 。-error LNK2001: unresolved external symbol _mainerror LNK2001: unr
15、esolved external symbol _main 解决办法解决外部符号错误:_main,_WinMain16,_beginthreadex )在创建 MFC 项目时, 不使用 MFC AppWizard 向导, 如果没有设置好项目参数,就会在编译时产生很多连接错误, 如 error LNK2001 错误, 典型的错误提示有:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain16msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain16nafxcwd.lib(thrdcore.ob