调试错误解决方案之VC++

📅 2026/7/28 17:49:36
调试错误解决方案之VC++
文|Seraph这篇文章主要用来记录使用Visual Studio过程中出现的各种error并提供自己当时解决的方案。但是一个error可能由不用原因引起的文中案例仅供大家参考。nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex解决将工程设置为Using MFC in static librarycannot open file “mfc42u.lib”解决安装vc时没有安装Unicode版本默认是不安装的可以下载几个库文件copy到vc98/MFC/Lib或者build选择非Unicode版本编译也可以在Set Configuation中配置Unicode相关删除fatal error RC1107: invalid usage; use RC /? for Help解决查看vc目录是否有问题1将附加额外目录暂时移至工程末尾2把其中的反斜线(/)替换为双反斜线(//)或者替换为斜线LINK : fatal error LNK1000: Internal error during IncrBuildImage解决1 项目(Project)-属性(Property)-链接器(Linker)-常规(General) 下面的“启用增量链接(Enable Incremental Linking)”将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。不过这又引入了另外一个警 告FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)。2 选择项目,属性(Property pages)-配置属性(Configuration Properties) -C/C修改“调试信息格式(Debug Information Format)”为“程序数据库(Program Database(/Zi))”即可。LINK1123:failure during conversion to COFF:file invalid or corrup解决将C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe目录下的cvtres.exe文件用C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe代替error c2064:项不会计算为接受1个参数的函数解决可能是运算符乘号未写error c2228:Grade左边必须有类/结构/联合解决不一定是左边的类结构问题前一语句缺少“”也会导致这个错误。error C2440: “”: 无法从“const char [11]”转换为“LPCWSTR”解决vc6.0运行没问题vs2005之后默认Unicode字符集可将其改为Muti-bye。error LNK2019:无法解析的外部符号 _main该符号在函数 ___tmainCRTStartup 中被引用解决建错工程了应该是win32 application(window应用程序win32 application和win32 Console Application区别win32 application就是普通的常见的窗口应用程序win32 Console Application就是MS-DOS窗口命令提示符error C4996:‘sprintf’:This fuction or variable may be unsafe解决将‘sprintf’改为‘sprintf_s’警告就不会再有了。很多函数不进行参数检测越界类等…),微软担心使用这些会造成内存异常所以就改写了同样的功能的函数改写的函数进行了参数的检测使用这些新的函数会更安全和便捷。一般只需加_s就行。error C2084: 函数“XXXXXX“已有主体解决检查是否有重名的函数定义error C2065:‘hInstanceNULL’ : undeclared identifier解决主要是“”是中文字符照成的可能还会报warning C4003: not enough actual parameters for macro CreateWindowA’错致命错误 RC1015: 无法打开包含文件 ‘afxres.h’解决实际上这个问题很多情况下是由于路径设置的问题引起的**executatble files:**C:\Program Files\Microsoft Visual Studio\Common\MSDev98\BinC:\Program Files\Microsoft Visual Studio\VC98\BINC:\Program Files\Microsoft Visual Studio\Common\TOOLSC:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT**include files:**C:\Program Files\Microsoft Visual Studio\VC98\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE**library files:**C:\Program Files\Microsoft Visual Studio\VC98\LIBC:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB**source files:**C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRCC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\CRT\SRCerror C2065: ‘xxxxxxxx’undeclared identifier解决很多是因为“”或者其他符号是中文下输入造成的。error C2653: is not a class or namespace name解决没建立一个新类都要在.cpp文件中加入#include “stdafx.h”,而且要加在第一行,编译器通过一个头文件stdafx.h 来使用预编译头文件。缺失return经常会使弹出内存操作错误解决理清程序结构找到漏写的返回值。First-chance exception in main.exe: 0xC0000005: Access Violation.解决访问违例使用空间但是未申请也可能在使用之前被delete了。LINK : fatal error LNK1168: cannot open Debug/ling.exe for writing解决结束ling.exe进程。error LNK2001: 无法解析的外部符号 public: void __thiscall CSketcherView::OnColorBlack解决OnColorBlack在源文件中未写菜单响应函数消息类型不见了解决直接删除.ncb文件error LNK2019 : unresolved external symbol __imp__PlaySoundW12 referenced in function _WinMain16解决#pragma comment(lib,“winmm.lib”)please enter the path for mfcs42d.pdb解决将debug文件夹内容全部删除调试错误 ASSERTE(_CrtIsValidHeapPointer(pUserData))解决delete 野指针前给指针赋空无法启动此程序 因为计算机中丢失MFC80UD.DLL解决把工程debug下文件全部删除然后rebulid projectVC6.0 error LNK2001: unresolved external symbol _main解决[Project] -- [Settings] -- 选择Link属性页, 在Project Options中将/subsystem:console改成/subsystem:windowsfatal error RC1004: unexpected end of file found解决 头文件里少了结尾的回车vc助手写到一般时突然没有提示了解决可能是前面有哪句写错了然后导致后面识别的全是字符File f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/viewscrl.cpp, Line 385解决需要在类开时时,增加SetScrollSizes ( MM_TEXT,CSize (0 , 0 ) );error C2668: ‘sqrt’ : ambiguous call to overloaded function解决sqrt处理类型必须是doubleerror C2144:syntax error : ‘char’ should be preceded by ‘;’解决如果在 a.h 里缺少分号, 则编译器会在 b.h 中会提示错误. 所以要在 a.h 中找错误dshow.h无法打开解决vs编译器没有包含dx的drawshow中的include、libfatal error C1001: An internal error has occurred in the compiler.解决清理解决方案然后build源文件与模块生成时的文件不同解决清空解决方案重新生成解决方案error LNK2001: 无法解析的外部符号 “public: virtual void __thiscall CDib::GetTmplPos(void)” (?GetTmplPosCDibUAEXXZ)解决虚函数格式错误必须在源文件函数后加x.exe中的0x77dd15de处有未经处理的异常:0xC015000F:正被停用的激活上下文不是最近激活的解决在Visual Studio中选择Debug | Exceptions菜单项在弹出的对话框中勾选所有的Win32 Exceptions。这样就有机会在第一时间异常处理前看到自己的代码中发生了什么错误而导致抛出异常从而改正错误消除程序中的隐患。注可能是析构函数中释放并未初始化的变量在VC6.0中出现failed to (or don’t know how to) build ‘D:\VC98\MFC\SRC\APPMODUL.CPP’解决系统目录设置问题找到××.dsp文件××为工程名用记事本打开找到如下SOURCE“D:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\APPMODUL.CPP” # End Source File # Begin Source File对SOURCE修改。error C2146: syntax error : missing ‘;’ before identifier ‘PVOID64’解决将VS编译器环境中directdraw包含文件和包含库调至默认库下方.vs中会先加载项目属性中的包含文件和库再加载vs本身配置的属性。所以导致有些对库包含顺序有要求的库文件出错。——也就是说directdraw不能在项目属性中设置LINK :fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt解决项目–工程属性-配置属性- 清单工具-输入和输出-嵌入清单选择[否]fatal error C1033: cannot open program database e:\实验室工程\newassistivev解决将文件夹换成可读写状态fatal error C1001: An internal error has occurred in the compiler.解决将解决方案清理再重建因为解决方案不是最新的弹出不能找到“SpeechRecognizeBase.h”等文件解决将项目属性的链接和附加目录修改好fatal error C1083:NO such file or directory解决项目属性附加目录添加$(ProjectDir)表示当前工程目录显示未声明某变量解决确认是否有如果其在另一关联文件定义了注意要用extern声明该变量。断点无效解决1清空生成的解决方案重新生成2将工具-选项-调试里-常规 找到 要求原文件与原始版本完全匹配 不要打勾此方法最后试用vc80.pdb解决将文件路径全部改成英文error C2143: syntax error : missing ‘;’ before ‘’error C2433: ‘CDib:: vector’ : ‘virtual’ not permitted on data declarationserror C4430: missing type specifier - int assumed. Note: C does not support default-interror C2238: unexpected token(s) preceding ‘;’解决使用vector未写using namespace std;LINK : fatal error LNK1104: 无法打开文件“ejTTS.lib”解决将链接器中的附加库目录修改为正确的路径chkstk.asm 错误解决在项目-》属性-》配置属性-》链接器-》系统将堆栈保留大小弄大点如50M52428800是堆太小加载溢出如数组buffer定义的太大就会造成此现象error C2065: ‘IDD_DIALOG_WNDSIZE’: undeclared identifier解决将resources.h包含到该对话框头文件中来当编译后按F5进行调试断点无效或有效但是位置乱跳解决勾选 工具-》调试-》常规 要求源文件与原始版本完全匹配程序通过VS编译器F5运行可以直接点击exe运行不正常解决写绝对路径问题就会消失。缺省情况下调试时使用的工作目录是你的项目所在的目录。而直接运行时是你的可执行文件所在的目录。有则有无则无不会无中生有定是另有乾坤加入某些资源文件在最终程序中是有效果的但是又用vs搜寻其ID不到解决清理解决方案重新生成解决方案cannot convert parameter 1 from ‘const char *’ to ‘LPCWSTR’解决将字符串用_T()转换或修改字符集为多字节字符集vs05默认为UNICODE注_T()包含在tchar头文件里error C4430: missing type specifier - int assumed. Note: C does not解决给函数声明加上返回类型注vc6.0默认类型为int型而vs不会这么做所以会报错。放在桌面win8的工程文件无法生成动态链接库DLL解决将工程移置其他目录尝试未知根源关闭工程时还会报无法保存项目设置信息生成的dll无法起到效果解决注意系统有分64和3264位程序必须调用64的dll用相应的平台生成dll文件warning C4786: std::reverse_iteratorstd::basic_stringchar,std::char_traits,std::allocator const *,std::basic_stringchar,std::char_traits,std::allocator ,std::basic_stringchar,std:: char_traits,std::allocator const ,std::basi。。。解决在#include 前加上 #pragma warning(disable:4786)强制去除警告注vc6.0对vector支持不是很好所以才会出现此警告。please enter the path for mfcs42d.pdb 提示解决方法解决Project settings | Link | Debug, 不选 “Separate types”。然后rebuild all。重新把Separate types 勾选上。59.LINK : fatal error LNK1104: 无法打开文件“Log.lib xxx.lib xxx.lib”解决VS10库包含之间是用“”隔离开来的VC6.0是用空格。R6010 abort() has been called解决一般是指针访问越界导致的仔细检查是否有内存写入失败依然会当作成功取获取指针并读取未写入任何信息的内存控件。error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup解决将“Configuration”-“General”中Configuration Type修改为Dynamic Library(.dll)原因由于自己是要编译DLL工程没有相应的启动入口函数。error C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead.解决在预处理器定义中添加_CRT_SECURE_NO_WARNINGS或者新建工程时不勾选安全开发生命周期(SDL)检查原因因为很多版本都没有使用安全函数为减少改动关闭相关检查。new xxx一个自建类时弹错应输入类型说明符。解决这种情况基本时函数或变量名与new的那个类同名造成的将函数同名函数或者同名变量名修改下就可以了。解析编辑器不是万能的我们不能自以为编译器可以处理什么而是要了解编译器处理逻辑并知道哪些时编译器处理不了的。这个时候就很体现平常良好的编程习惯的好处了我们一般变量名会全部小写类首字母大写这样就完全不会出现变量名和类名重名的情况。VC转VS工程出现LINK : fatal error LNK1117: 选项“mapinfo:lines”中的语法错误。解决配置属性-链接器-命令行右侧的附加选项删除mapinfo:lines。error LNK2019: 无法解析的外部符号 _GetIfEntry4 解决缺失链接库添加#pragma comment(lib, IPHlpApi.lib)。使用CArray数组报 afxtempl.h Line:254错误。解决可能是数组越界导致。不一定是指CArray本身程序任何地方数组越界都可能不可预知的错误。error C4996: ‘GetVersionExA’: 被声明为已否决。解决将Project Properties Configuration Properties C/C General SDL checks关掉。error C2872: “ACCESS_MASK”: 不明确的符号。解决Opencv的域名冲突。注释掉所有的using namespace cv使用域名引用cv::。找不到 Windows SDK 版本8.1。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。解决右键项目属性选择重定向项目在弹出的对话框中选择我们的SDK版本。或者之间安装8.1版本的SDK。每一天都是一个新的日子。走运当然是好的不过我情愿做到分毫不差。这样运气来的时候你就有所准备了。------《老人与海》