vc 6.0常见错误及分析

合集下载

第三章 VC++ 6.0常见编译错误

第三章  VC++ 6.0常见编译错误

第三章 VC++ 6.0常见编译错误[错误类型1]error C2143: syntax error : missing ';' before identifier 'scanf'语法错误:在'scanf'之前缺少“;”出错实例: int nscanf(“%d”, &n);[错误类型2]error C2065: 'A' : undeclared identifier标识符A未声明出错实例:int a;scanf(“%d”, &A);[错误类型3]error C2065: 'sqrt' : undeclared identifier标识符sqrt未定义(原因:未包含<math.h>)[错误类型4]error C2296: '%' : illegal, left operand has type 'float'error C2297: '%' :illegal, right operand has type 'float'非法, '%'运算符的左右操作数不是整型出错实例:float a = 10, b = 2;printf(“%d\n”, a % b);[错误类型5]error C2440: '=' : cannot convert from 'char [2]' to 'char'不能将字符串转换成字符出错实例:char ch;ch = “a”;[错误类型6]error C2181: illegal else without matching ifelse子句没有匹配的if[错误类型7]error C2196: case value '1' already usedcase 1: 已经被使用(原因:有相同的case 常量)[错误类型8]error C2078: too many initializers初始化值太多出错实例:int a[5] = {1, 2, 3, 4, 5, 6};[错误类型9]error C2105: '++' needs l-value++运算只能作用于左值(常量不能作左值)出错实例:int a[]= {1, 2, 3, 4, 5};int *pa = ++a; // 数组名是地址常量,不能作左值[错误类型10]error C2117: 'Hello' : array bounds overflow数组边界溢出出错实例:char str[5] = "Hello";[错误类型11]error C4716: 'Function' : must return a value函数Function()必须返回一个值出错实例:int Function(int n) // 函数定义,返回值类型:int 类型 {…………return; // 不返回值,语法错误,应为:return 表达式;}[错误类型12]error C2562: 'Function' : 'void' function returning a value无返回值的函数Function()返回了一个值出错实例:void Function(int n) // 函数定义,无返回值{…………return (n % 10); // 有返回值,语法错误,应为:return;}[错误类型13]error C2447: missing function header (old-style formal list?)缺少函数头出错实例:void Function(int n); // 都是“;”惹的祸{………return;}[错误类型14]error C2082: redefinition of formal parameter 'n'重定义了参数n出错实例:void Function(int n){int m, n; // 局部变量n与参数n同名return;}[错误类型15]error C2601: 'Function' : local function definitions are illegal 函数Function()定义是非法的(原因:出现嵌套定义)[错误类型16]error C2065: 'Function' : undeclared identifier函数Function()未声明(原因:先使用后声明或定义)。

VC6.0的路径错误解决

VC6.0的路径错误解决

VC6.0的路径设置错误而导致无法编译成功1.提示错误:Compiling... ,Error spawning cl.exe2.提示错误:fatal error C1083: Cannot open include file: 'FlowItem\flowchart.h': No such file or directory解决办法一:打开vc界面点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。

下面是参考路径(如果是装在D盘的,Microsoft Visual Studio之后的路径要注意)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\WINNTinclude files:C:\Program Files\Microsoft Visual Studio\VC98\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDElibrary files:C:\Program Files\Microsoft Visual Studio\VC98\LIBC:\Program Files\Microsoft Visual Studio\VC98\MFC\LIBsource 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\SRC解决方法二:卸载vc6.0,然后在C盘装上,上面的路径是默认的,如果你装在C盘,就不会有路径的问题。

VC6.0常见错误信息分析

VC6.0常见错误信息分析

1.程序开发过程中出现的错误类型我们在进行程序设计时,不可避免地会犯错误。

程序中的错误可以分为三类:编译错误、运行时错误和逻辑错误。

1.1编译错误编译错误(Compile errors)又称为编译时错误(Compiling-time errors): 是由于错误的编码产生的。

例如关键字拼写错误、将中文标点符号当成英文符号使用、遗漏了某些必要的标点符号或者使用了一个没有定义的标识符。

编译错误一般都是语法错误,当编译器对程序进行语法检查时,都能发现这些错误,并能够指出产生错误的位置(标出行号)。

我们可以根据编译出错信息指出的行号找到对应的源代码行改正错误,重新编译源程序。

只有当所有的编译错误被改正后,才能通过编译检查,产生目标代码文件。

改正编译错误的关键是要能正确理解编译器给出的编译错误信息。

VC++环境中的编译、链接错误信息是用英文表示的。

对于英文基础薄弱的读者,可以参考本实验指导书后面的“VC++编译、链接常见错误和警告信息中英文对照”。

通常情况下,一个语法错误可能产生多条编译错误信息,这是由于株连错误造成的,建议读者在处理编译错误时,找到第一个出现错误的位置改正后重新编译。

这样能够避免被株连错误迷惑。

值得指出的是,现在大部分编译器对错误的定位不精确,如果在编译器指出的行没有发现错误,应该向前查找错误。

例如,当提示第10行发生错误时,如果在第10行没有发现错误,请从第10行开始往前查找错误并修改之。

1.2运行时错误运行时错误(Run-time errors)是在程序的运行阶段出现的,当运行环境检测到程序的某些操作无法执行,例如除数为零时,就会出现运行时错误。

当运行环境检测到程序的某些操作是被禁止的,也会产生运行时错误。

例如,访问数组时超越数组的边界,空指针引用(NULL pointer assignment,空指针赋值,即有指针未赋具体地址就使用了)等等。

1.3逻辑错误逻辑错误(Logic errors):当程序没有按照程序员的意图执行时,就表明程序中存在逻辑错误。

VC++6.0裏面20种C语言常见错误代码解释

VC++6.0裏面20种C语言常见错误代码解释

11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'
成员函数“OnTimer”没有在“CHelloView”中声明。
12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'
9、error C2146: syntax error : missing ';' before identifier 'dc'
句法错误:在“dc”前丢了“;”。
10、error C2196: case value '69' already used
值69已经用过。(一般出现在switch语句的case分支中)
重载的函数“void reset(int)”在类“B”中找不到。
13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention
解决方法:
其一,包含正确路径的#include "stdafx.h";
其二,在*.cpp文件的Setting里面设置,C++选项中的分类 precompiled header,选择不包含头文件即可。
2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory

Visual_c++6.0常见错误提示汇总

Visual_c++6.0常见错误提示汇总

Visual C++6.0 编译错误提示汇总1、fatal error C1010: unexpected end of file while looking for 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、error 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: syntax error : missing ';' before identifier 'dc' 句法错误:在“dc”前丢了“;”。

VisualBasic 6.0常见错误及解决方案

VisualBasic 6.0常见错误及解决方案

解决方案 ⑴ 关闭不需要的应用程序、文档或资源文件。 ⑵ 将庞大的模块或过程分成几个。 虽然这样不能节省内存空间, 但可避免 64K 段边界 限制。 ⑶ 按增强方式重新启动 Microsoft Windows 。 ⑷ 空出一些磁盘空间以增加虚拟内存,或至少确保有空馀的空间。 ⑸ 减少一些驻留程序。 ⑹ 减少一些不需要的设备驱动程序。 ⑺ 减少 Public 变量的数量。 4. 下标越界(错误 9) 错误原因 只能在定义的范围内访问数组元素和集合成员。
错误分析 ⑴ 引用了不存在的数组元素。 ⑵ 声明数组时没有指定元素的数目。例如,下列的代码就会导致此错误:
2
Dim MyArray() As Integer MyArray(8) = 234 ' 导致错误 9。 ⑶ 引用了不存在的集合成员。 ⑷ 使用速写形式的下标,结果指定了错误的元素。 解决方案 ⑴ 下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指定范围。检查 数组的声明以确认其上界和下界。 若使用的是重新指定范围的数组, 应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。 ⑵ Visual Basic 并不会将没有指定范围的数组自动设为 0 – 10。相反必须使用 Dim 或 ReDim 来指定数组中元素的数目。 ⑶ 试着使用 For Each...Next 结构代替指定元素下标。 ⑷ 例如, 当在集合上使用 ! 运算子时, ! 自动指定了一个键。 例如 object!keyname.value 和 object.item(keyname).value 是一样的。在此例中,集合中如果 keyname 表示一 个错误键,错误就会产生。若要改进此错误,在集合对象中使用正确的键名称或索 引。 5. 数组长度固定或临时被锁定(错误 10) 错误原因 并非所有数组都可重设大小。即使数组声明成动态,或者数组是在 Variant 变量中, 也会被临时锁定。 错误分析 ⑴ 使用 ReDim 来改变固定大小数组的元素数。 例如, 在下列的代码中, 在 NextOne 过 程中 SomeArr 接收了固定大小的数组 FixedArr , 然后试图调整 SomeArr 的大小: Sub FirstOne Dim FixedArr(25) As Integer NextOne FixedArr() End Sub Sub NextOne(SomeArr() As Integer) ReDim SomeArr(35) ... End Sub ⑵ 对模块层次动态数组,要重新确定大小,而某一个元素已经作为参数传给了过程。 例如,在下列的代码中,ModArray 是模块层次动态数组,却将其第 56 个元素以按 引用传给 Test 过程:

VC6编译及链接过程中常见的出错提示

VC6编译及链接过程中常见的出错提示

Visual C++ 6.0编程环境的使用目录4 编译与链接过程中常见的出错提示 (1)4.1编译、链接问题的解决方法 (1)(1)努力读懂VC报告的错误与警告信息 (1)(2)定位问题所在行 (1)(3)解决问题的方法 (1)(4)避免被VC误导 (1)(5)编译链接问题的解决不代表程序正确 (2)4.2常用单词与术语 (2)4.3常见编译错误信息 (4)(1)error C2001: newline in constant (4)(2)error C2017: illegal escape sequence (4)(3)error C2015: too many characters in constant (4)(4)error C2137: empty character constant (5)(5)error C2018: unknown character '0x##' (5)(6)error C2041: illegal digit '#' for base '8' (5)(7)error C2065: 'xxxx' : undeclared identifier (5)(8)error C2086: 'xxxx' : redefinition (6)(9)error C2374: 'xxxx' : redefinition; multiple initialization (6)(10)error C2143: syntax error : missing ';' before (identifier) 'xxxx'或before 'type' (6)(11)error C4716: 'xxx' : must return a value (7)(12)error C2006: #include expected a filename, found '(' / found 'identifier' / found 'newline' (7)(13) error C2039: 'aver' : is not a member of 'STU' (7)(14)error C2043: illegal break (7)(15)error C2046: illegal case / error C2047: illegal default (8)(16)error C2050: switch expression not integral (8)(17)error C2051: case expression not constant (8)(18)error C2079: 'da' uses undefined struct 'data' (8)(19)error C2081: 'num2' : name in formal parameter list illegal (9)(20)error C2122: 'num2' : prototype parameter in name list illegal (9)(21)error C2082: redefinition of formal parameter 'aver' (9)(22)error C2172: 'fread' : actual parameter is not a pointer : parameter 1 (9)(23)error C2198: 'FindMin' : too few actual parameters (10)(24)error C2087: '<Unknown>' : missing subscript (10)(25)error C2133: 'num' : unknown size (10)(26)error C2106: '=' : left operand must be l-value (10)(27)error C2108: subscript is not of integral type (10)(28)error C2109: subscript requires array or pointer type (10)(29)error C2181: illegal else without matching if (11)(30)error C2296: '%' : illegal, left operand has type 'double ' (11)(31)fatal error C1004: unexpected end of file found (11)(32)fatal error C1021: invalid preprocessor command 'defint'/'hinclude' (11)(33)fatal error C1083: Cannot open include file: 'sdtio.h': No such file or directory (11)(34)error C2220: warning treated as error - no object file generated (11)4.4常见编译警告信息 (12)(1)warning C4129: 'm' : unrecognized character escape sequence (12)(2)warning C4508: 'main' : function should return a value; 'void' return type assumed (12)(3)warning C4098: 'change' : 'void' function returning a value (12)(4)warning C4700: local variable 'xxx' used without having been initialized (12)(5)warning C4013: 'print' undefined; assuming extern returning int (13)(6)warning C4047: '=' : 'int *' differs in levels of indirection from 'int ' (13)(7)warning C4024: 'fun' : different types for formal and actual parameter 2 (13)(8)warning C4133: 'function' : incompatible types - from 'int [128]' to 'char *' (13)(9)warning C4022: 'fread' : pointer mismatch for actual parameter 1 (14)(10)warning C4018: '<' : signed/unsigned mismatch (14)(11) warning C4305: '=' : truncation from 'const double ' to 'float ' (15)(12)warning C4553: '==' : operator has no effect; did you intend '='? (15)(13)warning C4715: 'fun' : not all control paths return a value (15)4.5常见链接错误 (16)(1)error LNK2001: unresolved external symbol _main (16)(2)error LNK2005: _main already defined in xxxx.obj (16)(3)fatal error LNK1168: cannot open Debug/P901.exe for writing (17)4.6T URBO C V2.0编译错误信息的英汉对照表 (17)4 编译与链接过程中常见的出错提示4.1 编译、链接问题的解决方法(1)努力读懂VC报告的错误与警告信息编译、链接过程中,主要由于初学和录入阶段的击键失误,VC经常会提示程序有错(语法和拼写问题,肯定不会指明算法有问题,否则就不用编程了)。

在VC++6.0中编译出错时解决方法汇总

在VC++6.0中编译出错时解决方法汇总

在VC++6.0中编译出错时解决方法汇总【1】missing function header (old-style formal list?)#SinaEditor_Temp_FontName 解决方法该函数的函数头后边加了分号去掉即可例如:void fun();{}就会出现那种情况【2】在编译VC++6.0是,出现fatal error C1010: unexpected end of file while looking for precompiled header directive的错误.解决方法:1、如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiled headers。

确定。

2、在文件开头添加:#include "stdafx.h"对预编译头文件说明如下:所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。

这样可以加快编译速度,节省时间。

预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。

编译器通过一个头文件stdafx.h来使用预编译头文件。

stdafx.h这个头文件名是可以在project的编译设置里指定的。

编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。

Visual_C++_6.0常见语法错误信息

Visual_C++_6.0常见语法错误信息

Visual_C++_6.0常见语法错误信息第一篇:Visual_C++_6.0常见语法错误信息Visual C++ 6.0常见的语法错误信息1、error C2018: unknown character '0xa1'不认识的字符'0xa1'。

(一般是汉字或中文标点符号)2、error C2065: 'I……' : undeclared identifier“I……”:未声明过的标识符。

3、error C2146: syntax error : missing ';'语法错误:丢了“;”。

4、error C2146: syntax error : missing ')'语法错误:丢了“)”。

5、fatal error C1004: unexpected end of file found 语法错误:丢了“}”。

6、error C2057: expected constant expression希望是常量表达式。

(一般出现在switch语句的case分支中)7、error C2196: case value 'xx' already used值xx已经用过。

(一般出现在switch语句的case分支中)8、error C2181: illegal else without matching if语法错误:if 缺少判断表达式。

第二篇:常见错误信息Keil C 编译器常见警告与错误信息的解决方法1)如果两个或更多c文件都需要使用某非bit型变量,那么声明是应将相应存储类型同时注明,即如果定义“uchar idata cntembuf;”,那么应声明为“extern uchar idata cntembuf;”或者“extern idata cntembuf;”;2)如果是bit型变量,则数据类型“bit”必须注明,而存储类型可以省略;LN认为,keil里之所以将bit变量和其他类型变量分开处理,是keil 面向的处理器都是51内核的,而51内核bit变量只存在于特殊功能寄存器和内存的位寻址区(bdata区),而特殊功能寄存器中的位变量若在两个以上文件中使用各各文件都只能用类似于sbit abcd = P1^6;的形式进行声明,并且keil不检测abcd这个位变量在不同文件中是否代替相同位(例如,可以在另一个c文件中声明为:sbit abcd = P0^5;等),这样一来,用extern声明的bit变量就只有在bdata区了,所以,允许在在一个c文件中定义位变量后,在其它c文件中省略“bdata”这个存储类型;而非bit型变量则可以在特殊功能寄存器,内存,外存,所以声明时要使存储类型与定义时的存储类型相同(也可以在定义和声明时都不规定存储类型,而又编译器根据编译模式自动分配)。

在64位系统上安装VC6.0常见错误的解决方法

在64位系统上安装VC6.0常见错误的解决方法

在64位系统上安装VC6.0常见错误的解决方法
因为VC6.0支持WIN32系统,所以要安装到64位计算机时会有兼容性错误,解决问题的方法如下:
第一种:无法打开afxres.h文件,一般都是配置的路径问题。

点开工具—选项命令,在选项对话框中选择目录选项卡。

然后重新配置路径,要使显示的路径与安装程序的路径一致。

第二种情况,显示无MS….dll文件等。

只需要将该文件复制到C:\\Windows\\SysWOW64中就可以了。

差几个就复制几个,先一个一个的复制,然后观察。

第三种:针对win8环境。

首先安装好后,打开路径,将MSDEV 修改成MSDEV1或其他,然后点击右键,选择“属性”。

在属性对话框选中兼容性选项卡,在更改所有用户中,设置兼容模式为“windows 7”,以“管理员身份运行”。

确定,运行MSDEV1即可。

VC6.0常见编译错误提示附解决方法

VC6.0常见编译错误提示附解决方法

VC6.0常见编译错误提⽰附解决⽅法编号:C2001直译:在常量中出现了换⾏。

错误分析:1.①字符串常量、字符常量中是否有换⾏。

2.②在这句语句中,某个字符串常量的尾部是否漏掉了双引号。

3.③在这语句中,某个字符创常量中是否出现了双引号字符“"”,但是没有使⽤转义符“\"”。

4.④在这句语句中,某个字符常量的尾部是否漏掉了单引号。

5.⑤是否在某句语句的尾部,或语句的中间误输⼊了⼀个单引号或双引号。

编号:C2015直译:字符常量中的字符太多了。

错误分析:单引号表⽰字符型常量。

⼀般的,单引号中必须有且只能有⼀个字符(使⽤转义符时,转义符所表⽰的字符当作⼀个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。

另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:if (x == 'x || x == 'y') { … }值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这⼏个字母的ASC码作为⼀个整数(int,4B)整体看待的数字。

编号:C2137直译:空的字符定义。

错误分析:原因是连⽤了两个单引号,⽽中间没有任何字符,这是不允许的。

编号:C2018直译:未知字符‘0x##'。

错误分析:0x##是字符ASC码的16进制表⽰法。

这⾥说的未知字符,通常是指全⾓符号、字母、数字,或者直接输⼊了汉字。

如果全⾓字符和汉字⽤双引号包含起来,则成为字符串常量的⼀部分,是不会引发这个错误的。

编号:C2141直译:在⼋进制中出现了⾮法的数字‘#'(这个数字#通常是8或者9)。

错误分析:如果某个数字常量以“0”开头(单纯的数字0除外),那么编译器会认为这是⼀个8进制数字。

例如:“089”、“078”、“093”都是⾮法的,⽽“071”是合法的,等同于是进制中的“57”。

编号:C2065直译:标识符“xxxx”未定义。

错误分析:⾸先,解释⼀下什么是标识符。

Visual c++6.0常见错误提示汇总

Visual c++6.0常见错误提示汇总

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、error 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: syntax error : missing ';' before identifier 'dc' 句法错误:在“dc”前丢了“;”。
Visual C++6.0 编译错误提示汇总
1、 fatal error C1010: unexpected end of file while looking for precompiled header directive。 寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h")

vc6.0常见错误及分析

vc6.0常见错误及分析

vc6.0常见错误及分析1、fatal error C1010: unexpected end of file while looking for 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、error C2057: expected constant expression希望是常量表达式。

提示:一般出现在switch 语句的case 分支中,用了变量作为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 '{'句法错误:“{”前缺少“;”。

VC 6.0编译器错误整理

VC 6.0编译器错误整理

VC 6.0编译器错误整理收藏编程时经常遇到一些编译错误,这些都是我遇到过的,去百度、Google找了半天找到的,现在整理一下,方便以后查找。

统一格式:ID.【错误提示】:编译器提示的错误信息【说明】:产生此错误的根本原因【解决方法】:解决此错误的具体方法1. 【错误提示】: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main【说明】: Windows项目要使用Windows子系统, 而不是Console 【解决方法】:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:console改成/subsystem:windows2. 【错误提示】:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16【说明】:控制台项目要使用Console子系统, 而不是Windows【解决方法】:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:windows改成/subsystem:console3. 【错误提示】:msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16【说明】:通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口【解决方法】:[Project] --> [Settings] --> 选择"C/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] --> [Settings] --> 选择"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 Multithreaded DLL 多线程动态链接库(debug版本)单线程: 不需要多线程调用时, 多用在DOS环境下多线程: 可以并发运行静态库: 直接将库与程序Link, 可以脱离MFC库运行动态库: 需要相应的DLL动态库, 程序才能运行release版本: 正式发布时使用debug版本: 调试阶段使用5. 【错误提示】:Compiling... ,Error spawning cl.exe【说明】:这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。

VC6.0中出现的致命错误

VC6.0中出现的致命错误
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
library files:
C:\Program Files\Microsoft Visual Studio\VC98\LIB
C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB
附件:路径参考
executatble files:
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
C:\Program Files\Microsoft Visual Studio\VC98\BIN
C:\Program Files\Microsoft Visual Studio\Common\TOOLS
致命错误 RC1015: 无法打开包含文件 'afxres.h'
"致命错误 RC1015: 无法打开包含文件 'afxres.h' "
终于找到答案,需要添加include (options)->目录(derectories)的目录选择include files 在路径中添加
C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT
include files:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE

目前最完整的visual studio 6.0(特别是vc6.0)无法安装之迷

目前最完整的visual studio 6.0(特别是vc6.0)无法安装之迷

[原创]目前最完整的:visual studio 6.0(特别是vc6.0)无法安装之迷本人历时两个星期终于解决了常见的visual studio 6.0(特别是vc6.0)无法安装问题,现将经验与大家分享:问题:1 Java虚拟机问题表现:安装VC6.0时,出现“更新Microsoft Virtual Machine for Java”这个是必选,不然就没有下一步,而如果选了后出现提示要重新启动。

重新启动后,又出现同样的提示,如此循环。

原因:没有安装Java虚拟机解决方法:安装Java虚拟机(很容易就可以从网上下到)2系统文件问题(适用范围不限于visual studio 6.0)xp用户表现:出现警告:窗口标题是: 16位Windows系统内容: C:\WINDOWS\SYSTEM32\CONFIG.NT. 系统文件不适用于运行MS-DOS与Microsoft Windows应用程序. 请选择"关闭"终止应用程序.原因:WinXP下, 某些应用程序无法在Win32模式下运行.解决方法:插入WinXP的安装盘到光驱中,在命令提示符下面分别执行如下命令(假设你的系统安装在C:下面, 光驱为F:)expand F:\i386\config.nt_ C:\windows\system32\config.ntexpand F:\i386\autoexec.nt_ C:\windows\system32\autoexec.ntexpand F:\i386\command.co_ C:\windows\system32\重启即可.其他操作系统读者可参考/yjcpu3重装问题xp用户表现:I安装向导在你的机器上检测到Visual Studio 6.0产品潜在的版本冲突。

安装后,可能单个或全部产品不能工作。

是否希望继续?II 安装完文件,进行系统更新时,出现:“安装程序无法创建一个DCOM用户帐号来注册 ...."最终无法安装成功原因:安装前原有Visual Studio 6.0没有卸载干净,注册表里还有Visual Studio 6.0在原帐户里的注册信息解决方法:彻底清除原有数据与信息执行以下步骤将从系统中完全删除所有 Visual Studio 和 MSDN Library 组件。

VC6.0常见断言错误总结

VC6.0常见断言错误总结
ASSERT(FALSE)
AFXAPI AfxMessageBox()
APPUI1.CPP中的第143行
这里的问题可能是由两种原因引起的:
1.字符串资源不存在
2.没有正确地引用资源(比如说错误地号码,等等)
ASSERT(m_hDC != NULL)
CDC::SelectObject()
对于每种类型地对象(pen,brush等)都有类似地断言。
DLGDATA.CPP文件的第308和325
如果这个调用针对的对象不是一个组中的第一个单选按钮,或者对组中任何一个按钮调用了不止一次,就会引起这个断言。只是第一个按钮可以有WS_GROUP窗口风格。用Class Wnzard时,如何想要把组中的第一个按钮外的其他按钮与一个成员变量关联,唯一的方法时先给这个按钮设置WS_GROUP风格,然后关联变量,最后再去掉WS_GROUP风格。如果忘记去掉WS_GROUP,就会出现断言。
WINCORE.CPP文件中的第747行
起因是由于使用Create()函数时试图赋予WS_POPUP风格没,但是不支持的,想要这种风格应该用CreateEx()函数
ASSERT(pMap != NULL)
CWnd::DestroyWindow()
WINCORE.CPP文件中的第969行
起因是在消息映射还没有激活的时候就关闭或是析构窗口
ASSERT(!pDX->m_bSaveAndValidate)
AFXAPI DDX_Control()
DLGDATA.CPP文件的第624行
调用UpdateData()或是UpdateData(TRUE)之前至少要调用一次UpdateData(FALSE),否则就会出现这个断言
ASSERT(FALSE)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、fatal error C1010: unexpected end of file while looking for 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、error C2057: expected constant expression
希望是常量表达式。

提示:一般出现在switch 语句的case 分支中,用了变量作为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: 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 (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 orcalling convention
类B 对类 A 中同名函数f1的重载仅根据返回值或调用约定上的区别。

14、error C2660: 'SetTimer' : function does not take 2 parameters “SetTimer”函数不传递2个参数。

提示:检查函数定义中的参数个数和类型,与调用时候的实参是否一致。

15、warning C4035: 'f……': no return value
“f……”的 return 语句没有返回值。

提示:f……这个函数应该有返回值,但是在定义中没有。

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”函数必须返回一个值。

19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing 连接错误:不能打开P1.exe 文件,以改写内容。

(一般是P1.Exe 还在运行,未关闭)
20 、error LNK2001: unresolved external symbol “public: virtual _
_thiscallC……::~C……(void)”
连接时发现没有实现的外部符号(变量、函数等)。

相关文档
最新文档