VS2010 常见错误类型汇总

开发路漫漫,尤其对于刚从事开发不久的新手来说,常常遇到一些稀奇古怪的错误,很是头疼,鉴于自己在开发过程中常遇到的几个错误做个分享,希望对大家有所帮助:

错误1:

  在创建完win32的DLL后,编译时出现:error LNK2005:_DllMain@12已经在dllmain.obj中定义

解决方法:

  在.cpp文件的开头加入如下代码:

  #ifdef _X86_
  extern "C" { int _afxForceUSRDLL; }
  #else
  extern "C" { int __afxForceUSRDLL; }
  #endif

错误2:

  在调用dll时出现:

  ”Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.

  This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.”

原因:

  你定义的指针函数原型出错,因为你调用的dll函数是一个远函数,而且是一个C函数,你得告诉编译器它是个C函数才行

解决方法:

  在定义函数指针时加上__stdcall即可

  eg: typedef void (__stdcall *pCloseComPort)();

错误3:

  现象:fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha

解决方法:

  因为是静态库中使用MFC时,当出现这种问题时,依次点击

  工程-->属性-->配置属性-->C++--> 命令行

  在其他命令中添加:/D "_AFXDLL"

错误4:

  现象: fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>

解决方法:

  原因:头文件的顺序不能反

  #include <afxwin.h>   //先引用这个

  #include <windows.h>  //后引用这个

错误5:

  现象:提示microsoft incremental linker已停止工作解决方法

解决方法:

  项目->属性->链接器->常规 下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。

  不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)

  选择项目,属性->配置属性 ->C/C++,修改“调试信息格式”为“程序数据库(/Zi)”即可。

错误6:

  现象:错误:fatal error C1003: 错误计数超过 100;正在停止编译

解决方法:

  原因:出现这种情况是因为编译器将C++文件编译成C导致的

  方法:

    1)如果你的main文件后缀为C,该为cpp即可

    2)如果你发现main文件后缀为cpp ,这是可能就是你的IDE设置的问题了,依次点击:属性管理器-->通用属性-->C/C++-->高级-->编译为,如果编译为里面是C,修改为默认值即可

错误7:

  现象:错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

解决方法:

  在电脑里搜索cvtres.exe文件,发现:

  C:\Program Files\Microsoft Visual Studio 10.0\VC\bin

  C:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7600.16385_none_ba476986f05abc65

  C:\Windows\Microsoft.NET\Framework\v4.0.30319

  三个路径下都有此文件,尝试用第二个路径里边的文件替换第一个路径的文件,问题解决。

上一篇:“windows的批处理”与“Linux的shell script”的类比学习


下一篇:(原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)