zoukankan      html  css  js  c++  java
  • VS2013常见错误排查

    1. CMemDC重定义

    1>nafxcwd.lib(afxglobals.obj) : error LNK2005: "public: virtual __thiscall CMemDC::~CMemDC(void)" (??1CMemDC@@UAE@XZ) 已经在 DMGraphicView.obj 中定义

    原因:上面是意思是,连接器说,我找到了两个定义,一个在 uafxcwd.lib(afxglobals.obj)里面,还有一个在MultiColorPlotCtrl.obj   。工程中有一个MemDC.h文件,里面定义了一个CMemDC类,不巧的是,VS2010的MFC新增了这个类,所以链接时会出问题。
    解决方法:
    1 修改MFC中CMemDC的名字。这个明显不行。。。
    2 将emule中的CMemDC改个名字,这个方法可以,可是我找了下,貌似用这个类的文件还不少。不甘心一条条改,于是想出下面的方法。。。
    3 增加一个宏定义,
    #define CMemDC XCMemDC
    将上面的语句加到stdafx.h的最后。(也可以在工程属性页中以编译器指令的形式定义宏,格式为 /D "CMemDC=XCMemDC")。

    2.error C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)”转换为“LRESULT (__thiscall CWnd )(WPARAM,LPARAM)”

    解决方法:

    首先,把原来的消息函数返回值类型改为LRESULT,函数内可以随便写个return TRUE; 然后消息函数的参数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个参数是否用得到;最后,消息映射如ON_MESSAGE(WM_message,& OnMyMessage)


    3.fatal error C1083: 无法打开包括文件: “fstream.h”: No such file or directory


    #include<fstream.h>


    改为


    #include <fstream>
    using namespace std;

    4.error LNK2026: 模块对于 SAFESEH 映像是不安全的

    解决方法:
    1.打开该项目的“属性页”对话框。
    2.单击“链接器”文件夹。
    3.单击“命令行”属性页。
    4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。

    5.error C4996: 'fopen': This function or variable may be unsafe

    解决方案,项目 ->属性 -> c/c++ -> 预处理器 -> 点击预处理器定义,编辑,加入_CRT_SECURE_NO_WARNINGS,即可


    6.fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次。
    在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,解决方案为:
    第一步:与上相同。
    第二步:将 项目|项目属性|配置属性|连接器|清单文件|嵌入清单 “是”改为“否”。
    第三步:一般计算机经过上两步设置就能解决问题了,但是如果还有问题,那就按一下方法解决:
    计算机是否为64bit操作系统,如是,继续2。
    查找是否有两个cvtres.exe。一个是C:Program Files(x86)Microsoft Visual Studio 10.0vcincvtres.exe, 另一个是C:WindowsMicrosoft.NETFrameworkv
    4.0.30319cvtres.exe。右键属性|详细信息 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。

    7.“CException”: 不能实例化抽象类

    有时候程序在VC6.0中运行是正常的,但是用VS2008打开时会出现 CException不能实例化抽象类的问题。这是由于VC6.0 与VS2008对于CException类的定义不同。

    解决方案:

    MFC较好地将异常封装到CException类及其派生类中,自成体系,下表给出了MFC 提供的预定义异常:

    异常类

    含义

    CMemoryException

    内存不足

    CFileException

     

    文件异常

    CArchiveException

    存档/序列化异常

    CNotSupportedException

    响应对不支持服务的请求

    CResourceException

    Windows 资源分配异常

    CDaoException

    数据库异常(DAO 类)

    CDBException

    数据库异常(ODBC 类)

    COleException

    OLE 异常

    COleDispatchException

    调度(自动化)异常

    CUserException

    用消息框警告用户然后引发一般 CException 的异常

    所以只要把上面的CException与异常类相对应的就行!!!比如文件异常,改成CFileException就行!


    8.fatal error LNK1104: 无法打开文件“LIBC.lib”

    解决方法见图



    9.  error C2440: “static_cast”: 无法从“UINT (__thiscall CTestDlg::* )(CPoint)”转换为   .

    从vc6转移到vs2005   发生下面问题:   
      BEGIN_MESSAGE_MAP(CTestDlg,   CCaptionBtnDlg)   
              ON_WM_NCHITTEST()       //vs2005   检测错误在这里   
      END_MESSAGE_MAP()   
          afx_msg   UINT   OnNcHitTest(CPoint   point);   
        
      UINT   CTestDlg::OnNcHitTest(CPoint   point)     
      {   
      ....   
      }   


    解决方法:
    afx_msg   UINT   OnNcHitTest(CPoint   point);   
          UINT   CTestDlg::OnNcHitTest(CPoint   point)     
          =>   
         afx_msg   LRESULT   OnNcHitTest(CPoint   point);   
        
      LRESULT   CTestDlg::OnNcHitTest(CPoint   point)

    10.MFC does not support WINVER less than 0x0501

    打开stdafx.h,作如下修改:
    #define WINVER 0x0400  
    改为  
    #define WINVER 0x0501  

    #define _WIN32_WINNT 0x0400  
    改为
    #define _WIN32_WINNT 0x0501

    11.错误 1 error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 

    解决方案,项目 ->属性 -> c/c++ -> 预处理器 -> 点击预处理器定义,编辑,加入_CRT_SECURE_NO_WARNINGS,即可

    版权声明:

  • 相关阅读:
    团队-团队编程项目作业名称-最终程序
    《团队-中国象棋-项目总结》
    课后作业-阅读任务-阅读提问-4
    《20171130-构建之法:现代软件工程-阅读笔记4》
    《软件工程课程总结》
    《20171117-构建之法:现代软件工程-阅读笔记-3》
    -课后作业-阅读任务-阅读提问-3
    《团队-中国象棋-团队一阶段互评》
    《团队-中国象棋-开发文档》
    《结对-贪吃蛇-结对项目总结》
  • 原文地址:https://www.cnblogs.com/walccott/p/4957101.html
Copyright © 2011-2022 走看看