VC6.0编译错误解决方法集锦
VC6.0编译错误解决方法集锦
VC6.0编译错误解决方法集锦windows编程2010-05-08 21:14:39 阅读83 评论0 字号:大中小订阅VC6.0编译错误解决方法集锦最近打算学习一下网络编程,而大部分socket编程环境都是Unix的,很是不便,在windows中总是不能编译,特寻得一篇文章解决此痒。
爽哉、爽哉!linking... server.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbol server.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbol server.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbol原因和解决办法:找不到相应函数,问题是Link选项里没有加入相应的lib库,winsock要连接wsock32.lib。
第三章 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()未声明(原因:先使用后声明或定义)。
Visual_C++_6.0常见编译错误信息
Visual C++ 6.0常见的编译错误信息1、error C2018: unknown character '0xa1'不认识的字符'0xa1'。
(一般是汉字或中文标点符号)2、error C2057: expected constant expression希望是常量表达式。
(一般出现在switch语句的case分支中)3、error C2065: 'I……' : undeclared identifier“I……”:未声明过的标识符。
4、error C2146: syntax error : missing ';'语法错误:丢了“;”。
10、error C2196: case value '69' already used值69已经用过。
(一般出现在switch语句的case分支中)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: '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”没有初始化就使用。
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语言常见错误代码解释
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
VC++6.0在win7下的安装方法以及因为在其他位置安装过VC++6.0而导致的编译错误解决办法(整理)
确实,想在Windows7或者Vista下使用这个,古老但是经典的Visual C++ 6.0 编程工具,是比较麻烦的,但偶因为专业的缘故又不得不使用Visual C++ 6.0 ,于是开始慢慢探索解决的方法。
一开始在Win7下用Visual C++编程我是用的Vmware里运行XP,然后再在虚拟XP里安装Visual C++ 6.0实现的,但是用久了就发现了问题,虚拟机里用Visual C++ 6.0编译才几次,VC6就“崩溃”了,要用任务管理器强行终止!但是一学期快过去了,经过长久的探索与Google,本人终于实现了,在Windows7下直接安装Visual C++ 6.0,并且在Win7的“标准用户”环境下完成了一个C语言的链表编译运行!(由于有1100多字就不列出来了,下面会给大家看看一个简单的程序编写效果的截图)。
虽然有些古怪兼容性的提示,但是偶发现在Win7下用Visual C++ 6.0 竟然比XP还要稳定。
我是有感受的——在XP(物理机下——就是你平常直接使用电脑)下用VC6对一个C程序反复的编译,即使程序是对的,编译不了15下,VC6就“崩溃”了,但是在Win7下对一个C程序反复的编译,即使程序是错的,就是编译25次,VC6也不会“崩溃”。
不扯谈了,下面步入正题。
在Windows7下安装或者使用Visual C++ 6.0要注意三大点。
1.在安装或者使用Visual C++ 6.0时,凡是出现兼容性问题提示对话框,一律按以下方式处理——把“不再显示此消息”打上勾,然后选择“运行程序”。
不要怕,本人亲自验证过没有任何“副作用”。
2.在安装VC的时候,选择“custom(自定义安装)”:接下来就要,注意了——不要选择TOOLS里面的OLE/COM OBJECT VIEWER工具,就可以顺利安装,另外,这个只是个查看工具,不会影响VC++的编译,所以大家以后可以尽情得使用vista和win7啦,不用再担心兼容性的问题。
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”前丢了“;”。
VC++6.0在电脑上的兼容性以及编译出错处理方法大全
VC6.0打开或者添加工程文件崩溃的解决方法很多学习编程的同学都遇到这样的问题,在Windows操作系统下使用Visual C++ 6.0编程时,如果点击菜单中的【打开】或者【添加】,或者按快捷键,都会弹出下图的对话框,出现程序崩溃并退出的情况。
出现这种问题的原因是VC6.0和其他软件冲突所致,网上一般认为是和Office2007或者Office2010冲突,有人说是和Office里的vosio冲突,但是经过检查发现卸载vosio之后问题依旧存在,也有人说是需要重装系统或者重新安装软件,但是这些方法均不可行。
其实这是微软的一个bug,微软官方对于这个问题给出了官方的解决方案(原文地址为/kb/241396/en-us)。
根据官方给出的方法,我们要用一个专门的插件来修复这个bug。
以下便是具体步骤:首先要下载所需的插件filetool.exe,Microsoft微软官方的下载地址为/download/vc60ent/s1/6.0/w9xnt4/en-us/filetool.exe。
下载得到一个.exe的自解压文件,双击或者右键解压,得到一个文件夹,里面包含filetool的项目文件,如下图。
找到FileTool.dsw文件(上图红色框中的文件),双击打开,进入Visual C++ 6.0之后,点击快捷菜单栏中的红色叹号进行编译,弹出下图所示创建文件的对话框,选【是】,弹出下图所示的调试对话框,直接点【取消】,这时编译完成,FileTool文件夹中多了一些文件,打开DeBug子文件夹,找到FileTool.dll 文件,如下图,将此文件复制粘贴到C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\AddIns路径下,如果你安装软件时自定义了common文件夹的路径,则要找到你自定义的路径,将其放进去。
放好FileTool.dll文件后,打开VC6软件,在【工具】(Tools)菜单中点击【定制…】(Customize),如下图找到【附加项和宏文件】(Add-Ins and Macro Files)选项卡,勾选其中的【File Tool Developer Studio Add-in】,(如果其中没有这一项,则可以点击浏览按钮,自己手动找到刚才得到的filetool.dll文件。
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.0编程易错问题及解决办法
0 引言多年从事高职高专学生的C++面向对象程序设计语言教学工作,在教学中发现,由于高职高专学生基础较为薄弱及课程设置等相关问题,导致绝大部分学生在学习C++程序设计过程中,尤其是使用Microsoft Visual C++ 6.0进行程序设计时,容易出现一些常见易错问题。
C++程序设计一般来说均是高职学生接触的第一门面向对象程序设计语言,其面向对象的编程思想和方法有别于C语言以及学生常规性思维。
本文总结一些常见的初学者容易出现的错误类型,便于感兴趣的初学者借鉴使用,提高大家的学习兴趣和学习效率。
1 易错问题及解决方案1.1 头文件问题使用Microsoft Visual C++ 6.0进行C++语言程序设计不同于C的一大特点之一,C++程序设计一般都要求需要先使用#in-clude命令包含需要使用到的头文件,例如程序需要使用cin及cout输入输出命令,则需要首先包含iostream文件,否则就会编译不成功,会出现cin、cout未定义以及>>、<<类型错误的错误提示。
1.2 名字空间问题类似于头文件问题,进行C++程序编译时,需要将有关的名字空间包含进来。
例如在头文件问题阐述中,为了使用Microsoft Vi-sual C++ 6.0已经定义的输入输出语句cin、cout以及<<、>>,光是包含了头文件iostream是不够的,。
此时一样会出现cin、cout未定义以及>>、<<类型错误的错误提示。
还需要使用using namespace 命令将std名字空间包含进来,因为Microsoft Visual C++ 6.0对于cin、cout以及>>、<<的定义是放在std名字空间里面的。
1.3 多个main函数问题C++程序强调一个工程有且仅有一个主函数。
但是在实际学习和编程中,很多初学者往往习惯性在一个工程下新建多个.cpp文件,且每一个.cpp文件里面都有一个主函数。
vc6.0编译错误参考
vc6.0编译错误参考Ambiguous operators need parentheses不明确的运算需要用括号括起Ambiguous symbol ``xxx``不明确的符号Argument list syntax error参数表语法错误Array bounds missing丢失数组界限符Array size toolarge数组尺寸太大Bad character in paramenters参数中有不适当的字符Bad file name format in include directive包含命令中文件名格式不正确Bad ifdef directive synatax编译预处理ifdef有语法错Bad undef directive syntax编译预处理undef有语法错Bit field too large位字段太长Call of non-function调用未定义的函数Call to function with no prototype调用函数时没有函数的说明Cannot modify a const object不允许修改常量对象Case outside of switch漏掉了case 语句Case syntax errorCase 语法错误Code has no effect代码不可述不可能执行到Compound statement missing{分程序漏掉"{"Conflicting type modifiers不明确的类型说明符Constant expression required要求常量表达式Constant out of range in comparison在比较中常量超出范围Conversion may lose significant digits转换时会丢失意义的数字Conversion of near pointer not allowed 不允许转换近指针Could not find file ``xxx``找不到XXX文件Declaration missing ;说明缺少";"Declaration syntax error说明中出现语法错误Default outside of switchDefault 出现在switch语句之外Define directive needs an identifier定义编译预处理需要标识符Division by zero用零作除数Do statement must have whileDo-while语句中缺少while部分Enum syntax error枚举类型语法错误Enumeration constant syntax error枚举常数语法错误Error directive :xxx错误的编译预处理命令Error writing output file写输出文件错误Expression syntax error表达式语法错误Extra parameter in call调用时出现多余错误File name too long文件名太长Function call missing函数调用缺少右括号Fuction definition out of place函数定义位置错误Fuction should return a value函数必需返回一个值Goto statement missing labelGoto语句没有标号Hexadecimal or octal constant too large 16进制或8进制常数太大Illegal character ``x``非法字符xIllegal initialization非法的初始化Illegal octal digit非法的8进制数字Illegal pointer subtraction非法的指针相减Illegal structure operation非法的结构体操作Illegal use of floating point非法的浮点运算Illegal use of pointer指针使用非法Improper use of a typedefsymbol类型定义符号使用不恰当In-line assembly not allowed不允许使用行间汇编Incompatible storage class存储类别不相容Incompatible type conversion不相容的类型转换Incorrect number format错误的数据格式Incorrect use of defaultDefault使用不当Invalid indirection无效的间接运算Invalid pointer addition指针相加无效Irreducible expression tree无法执行的表达式运算Lvalue required需要逻辑值0或非0值Macro argument syntax error宏参数语法错误Macro expansion too long宏的扩展以后太长Mismatched number of parameters in definition 定义中参数个数不匹配Misplaced break此处不应出现break语句Misplaced continue此处不应出现continue语句Misplaced decimal point此处不应出现小数点Misplaced elif directive不应编译预处理elifMisplaced else此处不应出现elseMisplaced else directive此处不应出现编译预处理else Misplaced endif directive此处不应出现编译预处理endifMust be addressable必须是可以编址的Must take address of memory location 必须存储定位的地址No declaration for function ``xxx``没有函数xxx的说明No stack缺少堆栈No type information没有类型信息Non-portable pointer assignment不可移动的指针(地址常数)赋值Non-portable pointer comparison不可移动的指针(地址常数)比较Non-portable pointer conversion不可移动的指针(地址常数)转换Not a valid expression format type不合法的表达式格式Not an allowed type不允许使用的类型Numeric constant too large数值常太大Out of memory内存不够用Parameter ``xxx`` is never used能数xxx没有用到Pointer required on left side of ->符号->的左边必须是指针Possible use of ``xxx`` before definition 在定义之前就使用了xxx(警告)Possibly incorrect assignment赋值可能不正确Redeclaration of ``xxx``重复定义了xxxRedefinition of ``xxx`` is not identical xxx的两次定义不一致Register allocation failure寄存器定址失败Repeat count needs an lvalue重复计数需要逻辑值Size of structure or array not known结构体或数给大小不确定Statement missing ;语句后缺少";"Structure or union syntax error结构体或联合体语法错误Structure size too large结构体尺寸太大Sub scripting missing ]下标缺少右方括号Superfluous & with function or array函数或数组中有多余的"&" Suspicious pointer conversion可疑的指针转换Symbol limit exceeded符号超限Too few parameters in call函数调用时的实参少于函数的参数不Too many default casesDefault太多(switch语句中一个)Too many error or warning messages错误或警告信息太多Too many type in declaration说明中类型太多Too much auto memory in function函数用到的局部存储太多Too much global data defined in file文件中全局数据太多Two consecutive dots两个连续的句点Type mismatch in parameter xxx参数xxx类型不匹配Type mismatch in redeclaration of ``xxx`` xxx重定义的类型不匹配Unable to create output file ``xxx``无法建立输出文件xxxUnable to open include file ``xxx``无法打开被包含的文件xxxUnable to open input file ``xxx``无法打开输入文件xxxUndefined label ``xxx``没有定义的标号xxxUndefined structure ``xxx``没有定义的结构xxxUndefined symbol ``xxx``没有定义的符号xxxUnexpected end of file in comment started on line xxx从xxx行开始的注解尚未结束文件不能结束Unexpected end of file in conditional started on line xxx从xxx 开始的条件语句尚未结束文件不能结束Unknown assemble instruction未知的汇编结构Unknown option未知的操作Unknown preprocessor directive: ``xxx``不认识的预处理命令xxxUnreachable code无路可达的代码Unterminated string or character constant字符串缺少引号User break用户强行中断了程序V oid functions may not return a valueV oid类型的函数不应有返回值Wrong number of arguments调用函数的参数数目错``xxx`` not an argumentxxx不是参数``xxx`` not part of structurexxx不是结构体的一部分xxx statement missing (xxx语句缺少左括号xxx statement missingxxx语句缺少右括号xxx statement missing ;xxx缺少分号xxx`` declared but never used说明了xxx但没有使用xxx`` is assigned a value which is never used给xxx赋了值但未用过Zero length structure结构体的长度1、fatal error C1010: unexpected end of file while looking for precompiled header directive。
VC 60编译及链接时常见问题的解决及#pragma
查看文章VC++6.0编译及链接时常见问题的解决及#pragma用法2009-05-0618:04http://my.626.htmlVC++6.0常见问题解决答案2008-08-23:29Q:errorBK1506:cannotopenfile'.\Debug\XXX.sbr':No such file or directoryA:关闭Browser Info就可以了,在工程、设置、C/C++、分类、文件列表、产生浏览信息Q:这个一般是由于"stdafx.h"这个头文件出错的,关闭即可,在工程、设置、C/C++、分类、预编译的头文件、不使用。
Q:ComboBox添加了记录,却无法显示?A:因为在VC中ComboBox默认显示0个,修改方法为,选中控件,点击向下按钮,调整控件高度直到合适。
Q:在VC中为什么突然不能显示相关类的属性或方法,不能出现下拉列表,属性方法提示等?A:这是VC的一个Bug,关闭工作区,删除目录下的*.ncb,然后重新编译即可。
Q:控件出现Debug Assertion Failed!错误?A:有可能是将控件应用放入了对话框构造函数中造成的,因为此时控件尚未生成,不能使用其函数。
Q:error c2504: "CTreeView":base class undefined(CTreeView的基类没有被定义)A:必须在系统头文件声明处(StdAfx.h)加入其头文件:afxcview.hQ:error C2143: syntax error :missing ';' before '*....A:在任何cpp文件的开头都按这样的顺序Include:#include "XXXDoc.h"、#include"XXXView.h"、#include "MainFrm.h"。
VC6.0错误指令及解决方法
1 error C2065: 'xxx' : undeclared identifier 102012136xxx标识符没定义。
标识符可能是变量名,函数名等等。
注意检查拼写,注意大小写。
注意小写字母l和数字1的区别。
检查变量的定义和使用是否一致。
变量定义语句:在函数最前面,以变量类型开始,以分号分隔的几个变量名,如int a, b; 注意一个变量定义语句只能写一个变量类型。
2 error C2146: syntax error : missing ';' before identifier 'xxx'语句末尾缺少分号,一般是错误定位所在行的上一行。
3 error LNK2001: unresolved external symbol _main没有main函数。
检查拼写,看是否把main写成了mian。
4 fatal error C1021: invalid preprocessor command 'includ'预处理指令拼写错误。
5 fatal error C1083: Cannot open include file: 'stio.h': No such file or directory包含文件名写错了。
文件名中间不能有空格。
6 error C2001: newline in constant检查是否漏了双引号,双引号是否配对,是否把双引号"写成了单引号'。
7 程序运行弹出非法操作的对话框。
检查是否有scanf漏掉&符号的问题。
8 编译时没错,链接有错:error LNK2005: _main already defined in a.objfatal error LNK1169: one or more multiply defined symbols found一般是在一个程序里面有多个源文件都包含main函数。
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常见错误提示汇总
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常见错误及分析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 '{'句法错误:“{”前缺少“;”。
为什么VC6.0老是报错
说明及下载 /blog/static/93512200922204216647/
为什么有时VC++出错计算机等级考试
有没有遇到过这种情况,VC++在它所在目录运行得好好的,在另外的目录使用时却出问题.
可能原因;可能是你安装VC++时有一个对话框中有一可选项"注册环境变量"(用英文写的) 你没有勾选就点了确定(注册环境变量的作用好像是配置正确的安装位置信息,注册后可以使用命令启动VC++)
有一步会出现一个对话框说VC6C覆盖安装,点"是"覆盖(也许VSS对于只将VC++作为C编译环境用用,不开发项目的人来说可能没多大意义,但这里,你怎么选都是会安装的(可能前面你选自定义安装去掉此项可以不安装,但会不公出总问题本人不清楚,还不如直接选其默认安装,省去不必要的麻烦)
)
基本就这些要注意地方了.
如果你之前装过这个版本的,由于有问题卸载了,再装这个时前面会有一点不同.
首选是要你选择要安装什么,有四项,默认选了第一项,(安装组件),其它步骤差不多.
你在用VC编译一个C语言程序时是否遇到过这样的问题:
总是出现"文件名.OBJ - 1 error(s), 0 warning(s)"即有一个错误.
我下载了多个版本的VC++6.0都不能完美的解决问题。
今天终于找到了一个省事省力的完整绿色版(不像那些精简版,我装企业版,占用150几M,这个有192M,可以看出组件很完整),它不仅目录信息完整(这样才可以正常编译)而且省去了菜鸟看上去有点复杂难懂的安装过程!【使用方法】
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”下面,你可以到相应的路径下找到这个应用程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC6.0编译错误解决方法集锦windows编程2010-05-08 21:14:39 阅读83 评论0 字号:大中小订阅VC6.0编译错误解决方法集锦最近打算学习一下网络编程,而大部分socket编程环境都是Unix的,很是不便,在windows中总是不能编译,特寻得一篇文章解决此痒。
爽哉、爽哉!linking... server.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbol server.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbol server.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbol原因和解决办法:找不到相应函数,问题是Link选项里没有加入相应的lib库,winsock要连接wsock32.lib。
特定库的找到办法是看LNK2001中找不到的函数名,通过msdn或者其他手段获取这个函数所在的库名,链接进去就OK了。
可以在project->setting->Link->object/library modules 里添加wsock32.lib,也可在stdafx.cpp 里添加#pragma comment(lib,"wsock32.lib")一般来说, 这是工程的类型选择错误引起的.如在VC中, 1.本来应该选择"Win32 Console Application",而错误选择了"Win32 Application" 2.使用了MFC的类,而选择"工程"的"设置"不使用MFC库编译. 改正的方法有: 1. 选择"工程"-> "设置"-> 连接,在底部的编辑窗口中,找到"/subsystem",把其改成"/subsystem:console" "/subsystem:windows". 2.在"工程"-> "设置"->"一般"选项中,在MFC项中改为"USEMFC AS A SHARED DLL".用VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。
产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。
如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。
初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:unresolved external symbol “symbol”(不确定的外部“符号”)。
如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。
一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本的连接库。
以下是可能产生LNK2001错误的原因:一.由于编码错误导致的LNK2001。
1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。
例如, 如果在C++源文件内声明了一变量“var1”,却试图在另一文件内以变量“VAR1”访问该变量,将发生该错误。
2.如果使用的内联函数是在.CPP文件内定义的,而不是在头文件内定义将导致LNK2001错误。
3.调用函数时如果所用的参数类型同函数声明时的类型不符将会产生LNK2001。
4.试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001。
5.要注意函数和变量的可公用性,只有全局变量、函数是可公用的。
静态函数和静态变量具有相同的使用范围限制。
当试图从文件外部访问任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001。
函数内声明的变量(局部变量) 只能在该函数的范围内使用。
C++的全局常量只有静态连接性能。
这不同于C,如果试图在C++的多个文件内使用全局变量也会产生LNK2001错误。
一种解决的方法是需要时在头文件中加入该常量的初始化代码,并在.CPP文件中包含该头文件;另一种方法是使用时给该变量赋以常数。
二.由于编译和链接的设置而造成的LNK2001 1.如果编译时使用的是/NOD(/NODEFAULTLIB)选项,程序所需要的运行库和MFC库在连接时由编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。
在这种情况下使用/NOD将导致错误LNK2001。
2.如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC 时将得到“unresolved external on ”的LNK2001错误信息。
3.使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“__imp__func”的引用。
如果试图使用静态库LIBC.LIB或LIBCMT.LIB进行连接,将在__imp__func上发生LNK2001;如果不使用/MD选项编译,在使用MSVCxx.LIB连接时也会发生LNK2001。
4.使用/ML选项编译时,如用LIBCMT.LIB链接会在_errno上发生LNK2001。
5.当编译调试版的应用程序时,如果采用发行版模态库进行连接也会产生LNK2001;同样,使用调试版模态库连接发行版应用程序时也会产生相同的问题。
6.不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。
7.在不同的模块使用内联和非内联的编译选项能够导致LNK2001。
如果创建C++库时打开了函数内联(/Ob1或/Ob2),但是在描述该函数的相应头文件里却关闭了函数内联(没有inline关键字),这时将得到该错误信息。
为避免该问题的发生,应该在相应的头文件中用inline关键字标志内联函数。
8.不正确的/SUBSYSTEM或/ENTRY设置也能导致LNK2001。
其实,产生LNK2001的原因还有很多,以上的原因只是一部分而已,对初学者来说这些就够理解一阵子了。
但是,分析错误原因的目的是为了避免错误的发生。
LNK2001错误虽然比较困难,但是只要注意到了上述问题,还是能够避免和予以解决的。
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”前丢了“;”。
10、error C2196: case value '69' already used值69已经用过。
(一般出现在switch语句的case分支中)编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。
弄清楚它形成的原因,就可以轻松解决它了。
造成LNK2005错误主要有以下几种情况:1.重复定义全局变量。
可能存在两种情况:A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。