您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 关于VC编译错误fatalerrorC1083的解决办法
关于VC编译错误fatalerrorC1083的解决办法这时因为该模块没有包括预编译头文件“stdafx.h”的缘故。VC用一个stdafx.cpp包含头文件stdafx.h,然后在stdafx.h里包含大部分系统头文件,这样编译时VC就通过编译stdafx.cpp把大部分系统头文件预编译进来了,在Debug目录下有一个很大的文件*.pch,这里就存储了预编译信息。根据这个原理,如果这个pch损坏了或被删除了,系统重新编译时就会抱怨“cannotopenprecompiledheaderfiledebug/*.pch”。这时怎么解决这个问题呢,打开Project-》Setting对话框选C++页,将Category下拉式列表框选中PrecompiledHeaders,最简单的办法就是选中第一个选项“Notusing....,这样就根本不用预编译头也不去寻找pch文件,就不会出错了,但是这样做的后果是每次编译、连接都化更多的时间。第二个选项”Automatic...,然后在“Throughheader”力填上stdafx.h,这样如果没有pch文件系统会自动生成一个pch,如果有的话就使用这个pch,这个选项是比较“智能”的。第三个选项是强行创建一个pch文件,第四个选项是直接使用pch文件。当然“Throughheaders”里都填stdafx.h了。1.nafxcwd.lib(appcore.obj):errorLNK2001:unresolvedexternalsymbol___argvnafxcwd.lib(appcore.obj):errorLNK2001:unresolvedexternalsymbol___argcnafxcwd.lib(timecore.obj):errorLNK2001:unresolvedexternalsymbol__mbctypenafxcwd.lib(apphelp.obj):errorLNK2001:unresolvedexternalsymbol__mbctypenafxcwd.lib(filelist.obj):errorLNK2001:unresolvedexternalsymbol__mbctype解决办法:PROJECT-SETING-C/C++-PREPROCESSOR-定义_AFXDLL,完毕。2.LINK:warningLNK4098:defaultlibMSVCRTconflictswithuseofotherlibs;use/NODEFAULTLIB:library解决办法:PROJECT-SETING-LINK-INPUT-IGNORELIB...-MSVCRT.LIB以下转其他,1.Linking...nafxcwd.lib(thrdcore.obj):errorLNK2001:unresolvedexternalsymbol__endthreadexnafxcwd.lib(thrdcore.obj):errorLNK2001:unresolvedexternalsymbol__beginthreadexlibcd.lib(crt0.obj):errorLNK2001:unresolvedexternalsymbol_mainQ:VC++默认的工程设置是单线程的,而你使用了多线程,所以要修改设置。选择菜单“Project|settings”,选择C/C++标签,在CODEGENERATION分类中选择除SINGLE-THREADED的其他选择。2.fatalerrorC1010:unexpectedendoffilewhilelookingforprecompiledheaderdirectiveQ:两个办法:--肯定是一个新添加的类的.cpp文件开头没包含stdafx.h,在该文件最前面加上即可--有时可以使用右键点击项目工程中的该cpp文件,选择setting,在c/c++栏,选择PreCompiledheaders,然后设置第一选项,选择不使用预编译头,解决这个问题。3.在编译时产生的下面的代码,那么下面的代码中的括号内的数字代表什么意思,还有error后的数字呢?Compiling...CalWnd.cppE:\StudyVC\CalendarApp\CalWnd.cpp(1092):errorC2065:'TTS_BALLOON':undeclaredidentifierE:\StudyVC\CalendarApp\CalWnd.cpp(1092):errorC2059:syntaxerror:')'E:\StudyVC\CalendarApp\CalWnd.cpp(1092):warningC4552:'|':operatorhasnoeffect;expectedoperatorwithside-effectErrorexecutingcl.exe.Q:括号中的数字是出错的代码行的行号。例如错误中的第1行表示CalWnd.cpp的1092行出现了错误。如果想快速找到这行,可以在错误信息行上双击鼠标,这时VC++会自动打开CalWnd.cpp文件并定位到这行。Error后面的数字表示错误代号。错误代号分为两类:C开头的是编译错误,即你的代码存在语法错误,你需要修改代码;LNK开头的是链接错误,通常你的代码并没有语法错误,可能是配置错误引起的,但有时LNK可能是由于拼写错误引起的。在错误信息行上按F1键,VC++会打开MSDN帮助并显示关于该错误信息的一个简单的解释,你可以根据该解释来知道到底是什么意思。4.vc编译的时候可以设置两个版本:debug和release,debug版本在运行的时候点击帮助菜单的about对话框出现如下错误信息:DebugAssertionFailed:Program:C:\fuan\Debug\fuan.exeFile:wincore.cppLine:628Forinformationonhowyourprogramcancauseanassertionfailure,seevisualc++documentationonasserts.(Pleaseretrytodebugapplication).但是如果把配置改成release版本,就不会出现问题,about对话框弹出正常。使用的是同一个源程序,为什么会出现不同的结果?Q:在MFC中,大量使用了ASSERT宏,这些宏通常可以来纠正一些错误,如还没有初始化指针就使用等。你所遇到的信息就是ASSERT宏报告的错误。通常你要检查一下是否存在错误。在Release方法下,ASSERT宏不会执行,所以也没有错误信息。不过,MFC中的ASSERT宏有时管得有点宽,如果确认没有错误,也可以不理会它。5.在win2000上能编译的程序到了win98就不能编译了。没有出错信息,一编译就停在--Configuration:Monitor-Win32Release-------Copyingcontentsfile...是不是跟*.hpj文件有关系,应该怎么改?Q:是和编译帮助文件有关,据说如果在Win98下安装了NortonAntiVirtus2000就会出现这种问题。可以把帮助文件从工程中去掉:1、在FileView标签下,选择SourceFiles文件夹下面的.hpj文件。2、右击文件并从菜单中选择Settings。3、点击General标签。4、清除掉Alwaysusecustombuildstep选项并选择Excludefilefrombuild。6.在用EnumWindows(EnumWindowsProc,(LPARAM)0);编译时老是出错:cannotconvertparameter1from'int(structHWND__*,long)'to'int(__stdcall*)(structHWND__*,long)'Q:实际上看一下错误信息就知道,你的EnumWindowsProc大概定义为:intEnumWindowsProc(HWND,long);实际应该定义为:int__stdcallEnumWindowsProc(HWND,long);7.编译以WinMain开头的函数出现LNK2001错误LIBCD.lib(crt0.obj):errorLNK2001:unresolvedexternalsymbol_mainDebug/Cpp1.exe:fatalerrorLNK1120:1unresolvedexternalsQ:估计是选错了工程类型。在VC中除了可以编译MFC程序外,还可以建立Win32Application,以WinMain为主函数。可以在VC中建立Win32Application,然后加入你的C程序,然后编译即可。8.编译后出现大量错误信息怎么办错误信息如下:Info:CompilingC:\user\x.cppError:x.cpp(20,26):Calltoundefinedfunction'loadCursor'Error:x.cpp(20,15):Cannotconvert'int'to'HICON__*'Error:x.cpp(23,21):Cannotconvert'void*'to'HBRUSH__*'Error:x.cpp(30,6):Undefinedsymbol'hWnd'Error:x.cpp(32,13):Cannotconvert'void*'to'HINSTANCE__*'Error:x.cpp(32,13):Typemismatchinparameter'hInstance'incallto'__stdcallCreateWindowExA(unsignedlong,constchar*,constchar*,unsignedlong,int,int,int,int,HWND__*,HMENU__*,HINSTANCE__*,void*)'Error:x.cpp(33,32):Undefinedsymbol'SHOW_MAXIMIZED'Warn:x.cpp(40,2):'hwnd'isdeclaredbutneverusedWarn:x.cpp(40,2):Parameter'lpszCmdLine'isneverusedWarn:x.cpp(40,2):Parameter'nCmdShow'isneverusedError:x.cpp(54,20):IllegalstructureoperationError:x.cpp(54,41):Undefinedsymbol'tmExternalLeading'Error:x.cpp(56,40):Undefinedsymbol'poshorzscoll'Error:x.cpp(57,40):Undefinedsymbol'posvertscoll'Error:x.cpp(58,16):Calltoundefinedfunction'SetSCrollRange'Error:x.cpp(135,73):Functioncallmissing)Error:x.cpp(142,7):MisplacedbreakError:x.cpp(143,5):CaseoutsideofswitchError:x.cpp(143,17):ExpressionsyntaxError:x.cpp(145,7):MisplacedbreakError:x.cpp(146,8):DefaultoutsideofswitchWarn:x.cpp(148,2):'slength'isdeclaredbutneverusedError:x.cpp(149,7):DeclarationterminatedincorrectlyError:x.cpp(150,2):Unexpected}Q:不可能一一为你分析错误,告诉你一些消除错误的原则,你自己来逐一分析,这样你才能学会
本文标题:关于VC编译错误fatalerrorC1083的解决办法
链接地址:https://www.777doc.com/doc-2665660 .html