注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

记录创意的火花

天天学习,好好向上

 
 
 

日志

 
 

VC++6.0编译出错调试方法  

2009-09-12 14:14:33|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

《1》在编译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编译这条指令之后的所有代码。  
   
  因此,所有的CPP实现文件第一条语句都是:#include   "stdafx.h"。  

 

《2》在编译VC++6.0是,出现one or more multiply defined symbols found 的错误.

一般还伴随着_XXx already defined in XXX.obj 的错误

也就是说链接时出现一个函数定义了两次了。

解决办法:

  不知道你是什么问题按以下步骤 重建双击vc打开新建 工程 选win32 Application加入文件名 默认项 完成新建 C++ Source File源文件 输入文件名 完成粘贴你的代码插入下面一行wndclass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);看看能不能编译通过 运行出来了

当然也如果是一段程序的话,可以不新建工程也不加入任何工程,一般不会出现这种问题

《3》Local function definitions are illegal错误

这个没有别的原因就是少了一个右大括号“}”,报错的个数和这个函数的位置有关,好像也和作用域有关,或者和它的使用频度有关,反正报错的个数不太一样,是主应用程序的一个函数少了一个“}”。解决的方法就是:如果函数的数量少就一个一个的用Ctrl+}来查,如果太多的话就的将最近改动过的来试,好像也没有什么好的方法。(一般报错的位置不是真正的出错位置,一般是报错位置的上一个函数)

Syntax error:missing ';'before'}' missing function header(old-style formal list?)这样的错误提示肯定是少了一个左大括号“{”,这种情况下报错的数目不会太多,一般也就是四个Syntax error:missing ';'before'}' ,一个missing function header(old-style formal list?),这时候注意你查你这个函数的左大括号就可以了,当时这时的报错的行一般都不是真正出问题的地方,而是在这个的上面的某个函数少了一个左大括号。

这是整个函数的大括号的问题,如果是函数内部少大括号的问题的话就不会报这么多错了,也比较好改。

《4》多次用getchar()函数时有些代码不执行问题

       这个问题很隐蔽,因为每次用键盘输入时会代入一个回车,这样第一个getchar得到想要的值,第二个会得到一个回车。解决方法是如果可以的话让getchar成对出现,第二个什么也不做。

《5》fatal error C1083: Cannot open precompiled header file: \'Debug/v13_3.pch\':

No such file or directory

在网上搜集了一下,这个错误是预编译文件的设置造成的,有几种可以尝试的途径:

1)单独编译StdAfx.cpp

2)编译所有(即按Ctrl+F7)

3)在工程-设置-c++-最下面的工程选项里去掉××。pch文件

4)在工程-设置-c++-在分类里选择预编译头文件,选择自动使用预补偿页眉,或者选择不使用预补偿头 

《6》error C2361: initialization of 'a' is skipped by 'default' label

看看以下代码:

 在实际项目中,用到一段源码,代码如下:

 switch (t)
 {
 case 0:
  int a = 0;
  break;
 default:
  break;
 }

在编译时弹出:error C2361: initialization of 'a' is skipped by 'default' label

错误。

最后改为

switch (t)
 {
 case 0:

     { 

     int a = 0;
       break;

     }
  default:
  break;
 }

pass。。。。。。。。。。。。

《7》error C2065: '_beginthreadex' : undeclared identifier

project Settings->C/C++->code generation->use run-time library   D M dll

如果还有问题  use shared MFC dll

《8》Fatal Error C1902
program database manager mismatch; please check your installation

原因:是由于mspdb80.dll匹配不当造成的,全盘搜索该文件,删除多余的

如果只安装了VS2005,该文件会存在于:

1 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE

2 C:\Program Files\Microsoft Visual Studio 8\VC\bin\amd64

3 C:\Program Files\Common Files\Microsoft Shared\VSA\8.0\VsaEnv

如果还安装了platform SDK, 那么该文件还会存在于:

4 C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\win64

5 C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\win64\x86\AMD64

如果除了这些还有别的地方有这个文件,一律删除!重新启动IDE再次编译。

  评论这张
 
阅读(1347)| 评论(4)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017