VC6.0中 各link错误解决方案

合集下载

VISUAL_C 6.0常见错误提示汇总

VISUAL_C  6.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 error------------------Case语法错误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;----------------说明缺少";"houjiumingDeclaration syntax error-----------------说明中出现语法错误Default outside of switch------------------Default出现在switch语句之外Define directive needs an identifier------------------定义编译预处理需要标识符Division by zero------------------用零作除数Do statement must have while------------------Do-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 label------------------Goto语句没有标号Hexadecimal or octal constant too large------------------16进制或8进制常数太大Illegal character''x''------------------非法字符xIllegal initialization------------------非法的初始化Illegal octal digit------------------非法的8进制数字houjiumingIllegal 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 default---------------------Default使用不当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----------------------此处不应出现else houjiumingMisplaced else directive------------------此处不应出现编译预处理elseMisplaced 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-------------------内存不够用houjiumingParameter''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 cases-------------------Default太多(switch语句中一个)Too many error or warning messages--------------------错误或警告信息太多Too many type in declaration-----------------说明中类型太多houjiumingToo 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----------------未知的汇编结构houjiumingUnknown option---------------未知的操作Unknown preprocessor directive:''xxx''-----------------不认识的预处理命令xxx Unreachable code------------------无路可达的代码Unterminated string or character constant-----------------字符串缺少引号User break----------------用户强行中断了程序Void functions may not return a value-----------------Void类型的函数不应有返回值Wrong number of arguments-----------------调用函数的参数数目错''xxx''not an argument-----------------xxx不是参数''xxx''not part of structure--------------------xxx不是结构体的一部分xxx statement missing(--------------------xxx语句缺少左括号xxx statement missing)------------------xxx语句缺少右括号xxx statement missing;--------------------xxx缺少分号houjiumingxxx''declared but never used-------------------说明了xxx但没有使用xxx''is assigned a value which is never used----------------------给xxx赋了值但未用过Zero length structure------------------结构体的长度为零。

VC6.0编译常见错误的详解及其错误分析(范文)

VC6.0编译常见错误的详解及其错误分析(范文)

VC6.0编译常见错误的详解及其错误分析(范文)第一篇:VC6.0编译常见错误的详解及其错误分析(范文)VC6.0编译常见错误第一部分编译错误1. error C2001: newline in constant编号:C2001直译:在常量中出现了换行。

错误分析:(1)字符串常量、字符常量中是否有换行。

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

(3)在这语句中,某个字符创常量中是否出现了双引号字符““”,但是没有使用转义符“””。

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

(5)是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。

2. error C2015: too many characters in constant编号:C2015直译:字符常量中的字符太多了。

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

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

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

两个单引号之间不加任何内容会引发如下错误:error C2137:empty characterconstant。

3. error C2018: unknown character '0x##'编号:C2018直译:未知字符‘0x##’。

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

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

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

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

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 过程:

VISUAL STUDIO 6.0 LINK 2001常见错误解决总结

VISUAL STUDIO 6.0 LINK 2001常见错误解决总结

visual studio6.0link2001常见错误解决总结第一:nafxcwd.lib(appcore.obj):error LNK2001:unresolved external symbol___argvnafxcwd.lib(appcore.obj):error LNK2001:unresolved external symbol___argcnafxcwd.lib(timecore.obj):error LNK2001:unresolved external symbol__mbctype nafxcwd.lib(apphelp.obj):error LNK2001:unresolved external symbol__mbctype nafxcwd.lib(filelist.obj):error LNK2001:unresolved external symbol__mbctype解决办法:PROJECT->SETING->C/C++->PREPROCESSOR->定义_AFXDLL第二:解决外部符号错误:_main,_WinMain@16,__beginthreadex在创建MFC项目时,不使用MFC AppWizard向导,如果没有设置好项目参数,就会在编译时产生很多连接错误,如error LNK2001错误,典型的错误提示有:libcmtd.lib(crt0.obj):error LNK2001:unresolved external symbol_mainLIBCD.lib(wincrt0.obj):error LNK2001:unresolved external symbol_WinMain@161.Windows子系统设置错误,提示:libcmtd.lib(crt0.obj):error LNK2001: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_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]-->选择"Link"属性页,在Category中选择Output,再在Entry-point symbol中填入wWinMainCRTStartup,即可4.线程运行时库设置错误,提示:nafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol__beginthreadex nafxcwd.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版本:调试阶段使用初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:unresolved external symbol“symbol”(不确定的外部“符号”)。

VC6常见错误

VC6常见错误

VC6.0编译常见错误2010-01-01 22:39:24分类:C/C++第一部分编译错误1.error C2001: newline in constant编号:C2001直译:在常量中出现了换行。

错误分析:(1)字符串常量、字符常量中是否有换行。

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

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

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

(5)是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。

2.error C2015: too many characters in constant编号:C2015直译:字符常量中的字符太多了。

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

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

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

两个单引号之间不加任何内容会引发如下错误:error C2137: empty character constant。

3.error C2018: unknown character '0x##'编号:C2018直译:未知字符‘0x##’。

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

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

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

4.error C2041: illegal digit '#' for base '8'编号:C2141直译:在八进制中出现了非法的数字‘#’(这个数字#通常是8或者9)。

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经常会提示程序有错(语法和拼写问题,肯定不会指明算法有问题,否则就不用编程了)。

visualstudio6.0link2001常见错误解决总结

visualstudio6.0link2001常见错误解决总结

visualstudio6.0link2001常见错误解决总结第一篇:visual studio 6.0 link 2001常见错误解决总结visual studio 6.0 link 2001常见错误解决总结第一:nafxcwd.lib(appcore.obj): error LNK2001: unresolved external symbol ___argvnafxcwd.lib(appcore.obj): error LNK2001: unresolved external symbol ___argcnafxcwd.lib(timecore.obj): error LNK2001: unresolved external symbol __mbctypenafxcwd.lib(apphelp.obj): error LNK2001: unresolved external symbol __mbctypenafxcwd.lib(filelist.obj): error LNK2001: unresolved external symbol __mbctype解决办法:PROJECT->SETING->C/C++->PREPROCESSOR->定义_AFXDLL第二:解决外部符号错误:_main,_WinMain@16,__beginthreadex在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有:libcmtd.lib(crt0.obj): error LNK2001: unresolved external symbol _mainLIBCD.lib(wincrt0.obj): error LNK2001: unresolved external symbol _WinMain@161.Windows子系统设置错误, 提示:libcmtd.lib(crt0.obj): error LNK2001: 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 _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]--> 选择“Link”属性页,在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版本: 调试阶段使用初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:unresolved external symbol “symbol”(不确定的外部“符号”)。

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”前丢了“;”。

VC6.0应用OpenCV 出现的错误及解决办法

VC6.0应用OpenCV 出现的错误及解决办法

!Error!VC6.0应用OpenCV出现的错误及解决办法王琼西安交大控制工程研究所eagle-sky@1.OpenCV2.2也添加了相关路径。

(P267<<Visual C++数字图象处理开发入门与编程实践>>)未通过编译,程序运行时报错fatal error C1083: Cannot open include file: 'cv.h': No such file or directory。

解决办法:由于编程软件使用的是VC6.0,建议用OpenCV1.0。

2.安装OpenCV1.0,进行相关的全局设置。

不要忘了添加<OpenCV安装目录>\lib,否则连接时报错“LINK : fatal error LNK1181: cannot open input file "..\..\Program Files\OpenCV\lib\highgui.lib" 执行link.exe 时出错.”3. 问题描述:编译没问题,但运行时出现如下警告对话框。

Could not execute: invalid directory (Win32 error 267)解决办法:造成这个错误的原因主要是运行别人的程序时,设置不正确.,工程—>设置,问题出在右边“调试”标签的“工作目录”和你现在运行工程的目录不一致。

把工作目录中的路径去掉即可。

4. pCapture = cvCaptureFromFile(szVideoFileName);不能打开A VI视频文件,解决办法:网上下载一个“K-Lite Codec Pack Full 3.9.3 Beta”(常用视频播放插件合集),安装以后,程序能顺利打开视频文件。

5. 新建工程后,程序编译时报错Linking...LoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvReleaseImageLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvDestroyWindowLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvWaitKey LoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvShowImageLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvNamedWindowLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvLoadImageDebug/LoadImage01.exe : fatal error LNK1120: 6 unresolved externals执行link.exe 时出错.解决办法:工程-》设置-》连接中,添加对象/库模块cxcore.lib cv.lib ml.libcvaux.lib highgui.lib cvcam.lib即可,如下图(需要用到即可加载几个)。

在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编译这条指令之后的所有代码。

在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即可。

如何解决VISUAL C++ 6.0不正确连接的问题

如何解决VISUAL C++ 6.0不正确连接的问题

Part1:1. 如何解决Visual C++ 6.0不正确连接的问题情景:明明改动了一个文件,却要把整个项目全部重新编译链接一次。

刚刚链接好,一运行,又提示重新编译链接一次。

这是因为出现了未来文件(修改时间和创建时间比系统时间晚)的缘故。

可以这样处理:找到工程文件夹下的debug目录,将创建和修改时间都比系统时间的文件全部删除,然后再从新“Rebuild All”一次。

2. 引起LNK2001的常见错误都有哪些遇到的LNK2001错误主要为:unresolved external symbol “symbol”如果链接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误信息。

一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在,拼写不正确或者使用错误;其次可能使用了不同版本的链接库。

以下是可能产生LNK2001错误的原因:<1>由于编码错误导致的LNK2001错误(1)不相匹配的程序代码或模块定义(.DEF)文件导致LNK2001。

例如,如果在C++源文件了内声明了一变量“var1”,却试图在另一个文件内以变量“var1”访问改变量。

(2)如果使用的内联函数是在.cpp文件内定义的,而不是在头文件内定义将导致LNK2001错误。

(3)调用函数时如果所用的参数类型和头函数声明时的类型不符将会产生LNK2001错误。

(4)试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001错误。

(5)要注意函数和变量的可公用性,只有全局变量、函数是可公用的。

静态函数和静态变量具有相同的使用范围限制。

当试图从文件外部方位任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001错误。

<2>由于编译和联机的设置而造成的LNK2001错误(1)如果编译时使用的是/NOD(/NODERAULTLIB)选项,程序所需要的运行库和MFC时将得到又编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。

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中文版 或 Visual Studio中设置包链接库lib文件(无法连接和解析的解决方案)

在VC++ 6.0中文版 或 Visual Studio中设置包链接库lib文件(无法连接和解析的解决方案)

VC++6.0上建立基于MFC应用程序时常出现以下2个错误:(1)加载或编译时提示找不到afxres.h(2)在LINK的是时候出现这样的错误:Linking...LINK : fatal error LNK1104: cannot open file "mfc42d.lib"执行link.exe 时出错.Calculator.exe - 1 error(s), 0 warning(s)答案:错误主要出现在网络流传的VC++6.0版本中,当调试链接MFC向导程序的时候,出现此错误。

发生这一错误的原因主要是设置问题.在网上搜了一遍,都是说"仅通过修改设置却无法解决,并且通过重新安装也无法解决"。

建议的错误(1)"正确的解决方法"是将安装文件中的\用户安装目录\VC6CN\VC98\MFC\INCLUDE 或用户安装目录\VC6EN\VC98\MFC\INCLUDE目录下的所有文件复制->粘贴到\用户安装目录\VC98\INCLUDE;建议的错误(2)安装文件中的\用户安装目录\VC6CN\VC98\MFC\LIB 或用户安装目录\VC6EN\VC98\MFC\LIB 目录下的所有文件复制,粘贴到\用户安装目录\VC98\LIB即可。

网上还解释了产生此错误的主要原因是VC编译程序在Microsoft Visual Studio\VC98\Lib目录下链接而非Microsoft Visual Studio\VC98\MFC\Lib目录,故即使Microsoft Visual Studio\VC98\MFC\Lib下有mfc42d.lib,也无法链接。

(INCLUDE问题类似)-------------------------------------------------------------------------------------------------实际上,采用以上方法不能完全成功,原因是这两个文件夹中文件是有各自作用的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC6 各link错误解决修改浏览权限| 删除错误1:LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main在project-setting-link里找到project options 去掉里面的/subsystem:console错误2:nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endt...将工程设置为Using MFC in a static library错误3:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main在project-setting-link里找到project options 将里面的/subsystem:console 改为/subsystem:windows/////////////////////////////////////////////////////////////VC6的几个Link error修改浏览权限| 删除sega 发表于- 2005-9-30 19:56:00今天下午别人问我的,错误大概是这样:nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexDebug/poisson.exe : fatal error LNK1120: 2 unresolved externalsError executing link.exe.我也不知道到底nafxcwd这个库是怎么回事,就google了一下,果然找到些东西:解决外部符号错误:_main,_WinMain@16,__beginthreadex在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16nafxcwd.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: 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 _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 __beginthreadex nafxcwd.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版本: 调试阶段使用//////////////////////////////////////////////找不到secondchar的定义,你是否没有把包含secondchar的*.h或*.lib加入到你项目?以下是可能产生LNK2001错误的原因:一.由于编码错误导致的LNK2001。

1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。

例如, 如果在C++源文件内声明了一变量“var1”,却试图在另一文件内以变量“VAR1”访问该变量,将发生该错误。

2.如果使用的内联函数是在.CPP文件内定义的,而不是在头文件内定义将导致LNK2001错误。

3.调用函数时如果所用的参数类型同函数声明时的类型不符将会产生LNK2001。

4.试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001。

5.要注意函数和变量的可公用性,只有全局变量、函数是可公用的。

静态函数和静态变量具有相同的使用范围限制。

当试图从文件外部访问任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001。

函数内声明的变量(局部变量) 只能在该函数的范围内使用。

C++的全局常量只有静态连接性能。

这不同于C,如果试图在C++的多个文件内使用全局变量也会产生LNK2001错误。

一种解决的方法是需要时在头文件中加入该常量的初始化代码,并在.CPP文件中包含该头文件;另一种方法是使用时给该变量赋以常数。

二.由于编译和链接的设置而造成的LNK20011.如果编译时使用的是/NOD(/NODEFAULTLIB)选项,程序所需要的运行库和MFC库在连接时由编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。

在这种情况下使用/NOD将导致错误LNK2001。

2.如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC 时将得到“unresolved external on _WinMain@16”的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错误虽然比较困难,但是只要注意到了上述问题,还是能够避免和予以解决的。

相关文档
最新文档