VC6.0编译错误解决方法集锦

合集下载

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 symbol

server.obj : error lnk2001: unresolved external symbol s

erver.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol s

erver.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

VC++6.0常见编译错误中英文对照表

VC++6.0常见编译错误中英文对照表

VC++6.0常见编译错误中英文对照表

fatal error C1003: error count exceeds number; stopping compilation

中文对照:(编译错误)错误太多,停止编译

分析:修改之前的错误,再次编译

fatal error C1004: unexpected end of file found

中文对照:(编译错误)文件未结束

分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“/*…*/”不完整等

fatal error C1083: Cannot open include file: 'xxx': No such file or directory 中文对照:(编译错误)无法打开头文件xxx:没有这个文件或路径

分析:头文件不存在、或者头文件拼写错误、或者文件为只读

fatal error C1903: unable to recover from previous error(s); stopping compilation 中文对照:(编译错误)无法从之前的错误中恢复,停止编译

分析:引起错误的原因很多,建议先修改之前的错误

error C2001: newline in constant

中文对照:(编译错误)常量中创建新行

分析:字符串常量多行书写

error C2006: #include expected a filename, found 'identifier'

中文对照:(编译错误)#include命令中需要文件名

VisualC++6.0无法正常启动提示0xc0000142怎么办?vc6.0无法执行程序解决方法

VisualC++6.0无法正常启动提示0xc0000142怎么办?vc6.0无法执行程序解决方法

VisualC++6.0⽆法正常启动提⽰0xc0000142怎么办?vc6.0⽆法执⾏程序解决⽅法

VC++(Visual C++) v6.0 简体绿⾊完整版

类型:编译⼯具

⼤⼩:35.8MB

语⾔:简体中⽂

时间:2021-07-06

查看详情

Microsoft Visual C++ 6.0 SP6 中⽂完整安装版(iso⽂件463M)

类型:编程⼯具

⼤⼩:463MB

语⾔:简体中⽂

时间:2014-08-14

查看详情

 vc6.0⽆法正常启动怎么办?

很多⽹友在升级Win10系统后出现vc6.0不能运⾏提⽰“应⽤程序⽆法正常启动0xc0000142”问题。⽆法运⾏的原因是

win10不兼容中⽂版的vc,解决⽅法很简单,直接⽤英⽂版的msdev.exe替换中⽂版的msdev.exe启动程序即可。

vc6.0⽆法执⾏程序解决⽅法:

⾸先下载英⽂版msdev.exe解压出来,然后找你的vc的安装⽬录。如果你没有安装时没有更改安装路径,那就默认在C盘C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin 这个⽬录下。

如果是绿⾊版,先找到vc总的⽬录,再按照\Common\MSDev98\Bin 这个路径来找。

直接将英⽂版的msdev.exe复制到Bin⽬录下并且覆盖。有的同学可能是绿⾊版的vc,这种版本的vc可能为了兼容改了⽂件名,不叫msedv.exe,不⽤管,你将英⽂版复制进去之后,每次启动时启动复制进去的英⽂版就是的。你可以右键发送⼀个快捷⽅式到桌⾯

编译错误:errorC2146的解决办法

编译错误:errorC2146的解决办法

编译错误:errorC2146的解决办法

最近在开发⼀个3D软件渲染器,渲染模块调⽤DDraw API实现。使⽤VC++ 2008。编译的时候出现下⾯的⼀连串错误:

1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前

⾯)

1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不

⽀持默认 int

1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: 语法错误 : 缺少“;”(在标识符“Buffer”的前⾯)

1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++

不⽀持默认 int

1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: 缺少类型说明符 - 假定为 int。注意: 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,空指针赋值,即有指针未赋具体地址就使用了)等等。

VC++6.0在电脑上的兼容性以及编译出错处理方法大全

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文件夹的路径,则要找到你自定义的路径,将其放进去。

VisualBasic 6.0常见错误及解决方案

VisualBasic 6.0常见错误及解决方案
5
9. 出现用户中断(错误 18) 错误原因 进程的中断执行是很有用的,如果不进行处理则会使应用程序中止。 错误分析 用户按 CTRL+BREAK 或其他中断键。 解决方案 在开发环境中可继续执行。 避免在运行时出现这种情况, 应使用合适的方法处理此错误。 10. 未发生错误而出现 Resume(错误 20) 错误原因 Resume 语句只能在错误处理程序内出现,而且只能在活动的错误处理程序中执行。 错误分析 ⑴ 将 Resume 语句放在错误处理程序的代码之外。 ⑵ 代码即使没有错误也跳到了错误处理程序之中。 解决方案 ⑴ 将此语句移到错误处理程序之内,或删除它。 ⑵ 也许拼错了行标签。不能经过过程跳到标签,所以搜寻过程中注明错误处理程序的 标签。如果找到了重复的 GoTo 语句的目标标签,而不是属于 On Error GoTo 语句 的目标标签的话,修改行标签使与所要的目标标签一致。 11. 堆栈空间溢出(错误 28) 错误原因 堆栈是内存的一个工作区,会随着程序运行的需要而增长或缩小 错误分析 ⑴ ⑵ ⑶ ⑷ ⑸ 有太多活动的 Function、Sub 或 Property 过程调用。 本地变量需要更多可用的本地变量空间。 有太多定长字符串。 DoEvents 函数调用的嵌套太多。 代码引起了事件层叠。
Visual Basic 6.0 常见错误及解决方案
以下“解决方案”中的内容对应的是“错误分析”中内容的解决方法。 1. 无效的过程调用或参数(错误 5) 错误原因 有些调用操作不能完成。 错误分析 ⑴ 参数值可能超出了允许的范围。例如,Sin 函数只接受特定范围的值。正的参数小 于 2,147,483,648 的是可接受的,而等于 2,147,483,648 则会产生错误。 ⑵ 如果所要调用的过程不适于当前平台的话,也会发生此错误。例如,有些程序可能 只应用到 Microsoft Windows 或 Macintosh 等。 解决方案 ⑴ 检查参数的许可范围。 ⑵ 检查过程的特定平台信息。 2. 溢出(错误 6) 错误原因 当赋值超出目标的限制时,就会发生溢出。 错误分析 ⑴ 赋值、计算或数据类型的结果的转换太大,以致于不能在变量类型所允许的范围内 表示出来。 ⑵ 给属性的赋值超过属性能接受的最大值。 ⑶ 试图在计算中使用一个数字,并且该数字被强制为一个整数,但是结果超过了整数 的范围,例如: Dim x As Long x = 2000 * 365 解决方案 ⑴ 赋值给足够表示值的范围的类型的变量上。

关于编译错误 fatal error C1083 Cannot open precompiled header file

关于编译错误 fatal error C1083 Cannot open precompiled header file

今天编译一个比较大的工程时,总是遇到这样的编译错误,想必凡是用过VC6.0做过比较大的程序 或者做过MFC开发的朋友都遇到过。错误提示如下,fatal error C1083:Cannot open precompiled header file: 'rcmq.pch': Permission denied .其中rcmq是我的工程的名字。我到网上查了资料,顺便学习了这方面的知识,这主要与预编译头文件有关。根据我的项目开发经验,我总结了避免这个编译错误的一些方法:(1)在菜单栏里的工程 -> 设置 -> C/C++ 中,预编译的的头文件选项卡,选择“不使用预补偿页眉”单选项就可以了。不过这种方法的缺点是以后每次编译都会比较慢。(2)由于在大的工程里,有一些头文件经常使用,往往就会导致这样的编译错误。解决办法是把这些经常使用的头文件写入一个文件(比如 precompile.h)里,就如MFC程序里的stdAfx.h一样,然后在文件precompile.cpp文件里加入#include 即可。对于precompile.cpp在项目设置里选择“设置补偿页眉文件”,对于其他.cpp文件设置“使 用补偿页眉文件”。下面是在网上看到的有关预编译头文件的机制,还是很有必要研究一下的。预编译头的概念: 所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的 代码可以是任何的C/C++代码--------甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改, 则需要重新编译生成预编译头文件。注意生成预编译头文件是很耗时间的。同时你得注意预编译头文件通常很大,通常有6-7M大。注意及时清理那些没有用的预 编译头文件。 也许你会问:现在的编译器都有Time stamp的功能,编译器在编译整个工程的时候,它只会编译那些经过修改的文件,而不会去编译那些从上次编译过,到现在没有被修改过的文件。那么为什么还 要预编译头文件呢?答案在这里,我们知道编译器是以文件为单位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有头文件中的东 西(.eg Macro, Preprocesser )都要重新处理一遍。VC的预编译头文件保存的正是这部分信息。以避免每次都要重新处理这些头文件。 预编译头的作用: 根据上文介绍,预编译头文件的作用当然就是提高便宜速度了,有了它你没有必要每次都编译那些不需要经常改变的代码。编译性能当然就提高了。 预编译头的使用: 要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成

vc++6.0菜单中英文对照附录常见编译错误

vc++6.0菜单中英文对照附录常见编译错误

VC++6.0系统开发环境

在Windows 98/2000/XP操作系统中正确安装了Visual C++ 6.0后,可以启动Visual C++6.0系统。第一次运行时,将显示出“Tip of the Day”对话框,单击“Next”命令按钮,可看到有关各种操作的提示;如果不选中“Show tips at startup”复选框,那么以后运行Visual C++ 6.0时将不再出现此对话框。单击“Close”命令按钮关闭此对话框,进入Visual C++6.0系统开发环境。

1 开发环境的菜单功能

Visual C++6.0开发环境界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口以及状态栏等组成。在开发环境界面中,可以看到在它的上方排列着一系列菜单,如图1所示,而每一个菜单下都有各自的菜单命令。在进一步与开发环境打交道之前,先了解各个菜单命令的基本功能是很有必要的,因为大部分的操作都是通过菜单来完成的。

图 1 VC++主菜单栏

1. File莱单

File菜单中的命令主要用来对文件和项目进行操作,如“新建”、“打开”、“保存”、“打印”等。其中各项命令的功能描述如表1所示。

表 1 File菜单命令的快捷键及功能描述

菜单命令快捷键功能描述

New Ctrl+N 创建一个新项目或文件

Open Ctrl+O 打开已有的文件

Close 关闭当前被打开的文件

Open Workspace 打开一个已有的项目

Save Workspace 保存当前项目

Close Workspace 关闭当前项目

VC++编译器设置及错误一览

VC++编译器设置及错误一览

VC++编译器设置错误

可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面点击VC“TOOLS(工具)”—>“Option (选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。

如果你是按照初始路径安装vc6.0的,路径应为:

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

C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT

include files:

fatal error C1853错误解决办法

fatal error C1853错误解决办法

VC6.0编译器中混有.c文件时出现fatal error C1853错误解决办法 收藏第一章的sample1,文中提到由于windows底层代码基本上是用c语言编写的,因此新工程里的CPP文件要改为C文件。但是在编译时出现错误fatal error C1853: "debug/1_1.pch" is not a precomplied header file with this complier......这个问题还真是头一次遇到,怎么办?百度一下,解决办法如下:错误原因:该错误是因为当项目中混合了 .cpp 和 .c 文件时,编译器会对它们采取不同的编译方式(主要是因为对函数声明的处理方式不同),因而不能共用一个预编译头文件。在 VC++ 中,默认的预编译头文件是针对 C++ 的 (stdafx.h 和 stdafx.cpp),当然也可以创建针对 C 的预编译头。有趣的是,在旧版的 VC++ 中,这个错误的提示很具有误导性:fatal error C1853: 'xxx.pch' is not a precompiled header file created with this compiler. 常常让人摸不着头脑。应该说,在新版中的这个提示是有所改进的。不过在网上搜索一番,对这个问题往往都是建议对整个项目取消预编译头的设置。这显然不是一个好的解决方案。对于一个比较大的工程来说,使用预编译头可以使总的编译时间大大减少。因而保留预编译头的设置才是比较好的解决方案。搜索 MSDN,针对不同的情况,可以有不同的解决方案:方案1:适用于绝大多数文件是 .cpp 或绝大多数文件是.c的情况。在这种情况下,将少数的不同类文件设为不使用预编译头是比较平衡的做法,方法是:对于 VC++6.0,在 FileView 里对要取消预编译头的 .c (或 .cpp) 文件点右键,选择 settings,在弹出的对话框右边选择 category 为 precompiled headers,再设置选项为 not using ...;对于 VS2005,则在 solution explorer 中对相应文件点右键选择 properties,在 precompiled headers 项下设置 not using... 即可。如果需要设置多个文件,则可以按住 Ctrl 键再同时选中这些文件并设置。方案2:如果受影响的文件比较多,则把它们都设置禁止预编译头的话仍然会使项目总体的编译速度大大降低,得不偿失。这时考虑可以为这组文件建立专用的预编译头。在 VC++ 极早期版本(1.5及以前版本)中是支持单个工程中建立分别针对 .c 和 .cpp 的预编译头的,但之后的版本中只支持单独的预编译头。在这种情况下,我们可以在workspace(或 solution)中建立一个新的静态链接库 (Static Library) 工程,将所有的 .c 文件独立出来加入到该工程中单独编译,这样就可以在该静态链接库中针对 .c 文件创建预编译头。但是这样做在一定程度上需要被独立出来的代码在逻辑上是属于同一模块中的,这样才便于维护。不过从设计的角度来说,这个要求一般是满

visual studio 6.0 link 2001常见错误解决总结

visual studio 6.0 link 2001常见错误解决总结

visual studio 6.0 link 2001常见错误解决总结

第一:

nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv

nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc

nafxcwd.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 _main

vc6.0中常见错误提示信息

vc6.0中常见错误提示信息

Visual‎ C++常见错误信息‎

VC编译出错‎时会指示出程‎序错误的位置‎,鼠标双击出错‎信息行,就可以实现错‎误的定位。

1、fatal error C1083: Cannot‎open includ‎e file: 'R…….h': No such file or direct‎o ry

不能打开包含‎文件“R…….h”:没有这样的文‎件或目录。

2、error C2018: unknow‎n charac‎t er '0xa3'

不认识的字符‎'0xa3'。(一般是汉字或‎中文标点符号‎)

3. fatal error C1004: unexpe‎c ted end of file found

源文件的…{‟‎与…}‟不匹配。

4、error C2057: expect‎e d consta‎n t expres‎s ion

希望是常量表‎达式。(一般出现在s‎wi tch语‎句的case‎分支中)

5、error C2065: 'abc' : undecl‎a red identi‎f ier

“abc”:标识符没定义‎,有两种可能,一是未定义;二是在引用时‎标识符的名字‎写错了。

6、LINK : fatal error LNK116‎8: cannot‎open Debug/P1.exe for writin‎g

连接错误:不能打开P1‎.exe文件,以改写内容。(一般是P1.Exe还在运‎行,未关闭)

7、warnin‎g C4700: local variab‎l e 'bReset‎' used withou‎t having‎been initia‎l ized

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

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

!Error!

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

王琼

西安交大控制工程研究所

eagle-sky@

1.OpenCV

2.2也添加了相关路径。。。。。。(P267<>)未通过编译,程序运行时报错fatal error C1083: Cannot open include file: 'cv.h': No such file or directory。

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

2.安装OpenCV1.0,进行相关的全局设置。不要忘了添加\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”(常用视频播放插件合集),安装以后,程序能顺利打开视频文件。

vc6.0c++编程程序调试错误解决小知识点编程体会

vc6.0c++编程程序调试错误解决小知识点编程体会

一、UpdateData(TRUE):把对话框的控件的内容传到参数中,false把参数值传到对话框的控件中.

在对edit对话框数据交互进行操作的时候千万不要忘记这一点!!!!!

二、unexpected end of file while looking for precompiled header directive 的问题解决:

右键点工程名,选设置,然后选c/c++属性页,再选catagory选单中选precompiled header ,将选项置成no use 或者autometic

三、No such file or directory

可能是工程的目录不对,可以看看以下目录是否正确:

工具->选择->目录,看Include files选项下是否有你的安装目录,如下

E:\Program Files\Microsoft Visual Studio\VC98\INCLUDE

四、验证程序消耗时间的方法

unsigned long fStart = GetTickCount();

//.....所要测量代码

unsigned long fEndTime = GetTickCount();

unsigned long fTime = fEndTime - fStart;

五、在VC6中,给新加入的对话框创建类,说不能OPEN这CPP和H文件呢。。但是文件夹下却已经生成了这两个文件

关闭程序,在建立的工程下面删除文件为*.aps,*.clw,*.ncb,*.opt,*.plg,重新打开该程序,有提示,选择工程名源文件件,但要去掉后缀.Cpp即可。

VC6.0错误指令及解决方法

VC6.0错误指令及解决方法

1 error C2065: 'xxx' : undeclared identifier 102012136

xxx标识符没定义。标识符可能是变量名,函数名等等。

注意检查拼写,注意大小写。注意小写字母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.obj

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 symbol

server.obj : error lnk2001: unresolved external symbol s

erver.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol s

erver.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.obj : error lnk2001: unresolved external symbol

server.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项中改为"USE

MFC 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

相关文档
最新文档