从 LNK2005 看 stdafx.h

原创 2004年10月01日 13:12:00

编译错误:
nafxcwd.lib(afxmem.obj) : error LNK2005:
"void __cdecl operator delete(void *)"(??3@YAXPAX@Z) already defined
in LIBCMTD.lib(dbgnew.obj)

问题说明:
http://support.microsoft.com/default.aspx?scid=kb;en-us;q148652


msdn 有关于 LNK2005 的详细说明。 但是一般的症结在于同时使用了 CRT 和 MFC 的运行库, 并且 CRT 在先于 MFC 运行库之前被链接。


问题出现:
取消了预编译头文件, 并且使用了 CRT 有可能导致这个问题. 比如, 在自定义头文件 common.h 申明了程序所使用的全局函数, 并且用到了 CRT 库函数. 这中情况下就不能保证 MFC 运行库先于 CRT 被链接.

处理办法:
1, 如果硬要取消预编译头文件,可以在可能先编译的程序模块中加入 #include “StdAfx.h”.
2, 不要取消预编译头文件. 如果对建立的文件模块比较熟悉的话, 是不会产生什么 “unexpected end of file while looking for precompiled header...”之类的错误的.这种错误主要还是对工程文件的组织不熟悉, 简单的处理办法, 将公共使用的模块头文件放在 “StdAfx.h”中. 尽管这样情况下,改动某些头文件可能使整个工程需要重新编译, 延长编译时间. 但是, 如果正确设计好接口并规整的使用头文件, 预编译这中东西就只会使你的工作效率更高了.

C++中stdafx.h的作用体会

stdafx.h的作用体会 当使用visual C++时,总是包含了头文件stdafx.h,却不知道是干什么用的. 哈哈,今天查找了相关资料,解释如下: 当我们使用AppWizard来自...
  • xueruifan
  • xueruifan
  • 2015年04月24日 11:01
  • 2790

有关头文件“stdafx.h”的问题的解决

有关头文件“stdafx.h”的问题的解决由于经常使用vs编写程序,所以会遇到很多的问题。在此总结了一些在使用vs编写c++的常见的问题和解决方法提供给大家参考。 编译语言:c++ 编译环境:vs...
  • SchopenhauerZhang
  • SchopenhauerZhang
  • 2016年04月10日 16:51
  • 4299

VC中的stdafx.h简介(原理及作用)

简介: stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。 所谓头文件预编译,就是把一个工程(...
  • GVFDBDF
  • GVFDBDF
  • 2015年09月20日 15:30
  • 699

C++中总是出错 #include "stdafx.h"语法错误

C++中总是出错 #include "stdafx.h"语法错误 最近在VS2010中新建一个MFC DLL时,出现: #include "stdafx.h"语法错误 解决方案: 在项目-...
  • m0_37407756
  • m0_37407756
  • 2017年04月16日 20:58
  • 1157

关于#include "stdafx.h

1)Standard Application Frame Extend没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Windows和MFC的include文件都...
  • u012999771
  • u012999771
  • 2014年12月09日 09:56
  • 655

预编译头文件(stdafx.h)的原理

原文:http://521-lion.blog.163.com/blog/static/6662942920117236949606/  stdafx名称的英文全称为:Standard Applica...
  • luoweifu
  • luoweifu
  • 2014年11月26日 23:35
  • 9301

C/C++—— #include“stdafx.h”详解

转自:http://blog.csdn.net/qingkong8832/article/details/6695123 1,用VS2008新建项目,选择【Win32】-【Win32控制台应用程序】...
  • sinat_36053757
  • sinat_36053757
  • 2017年05月06日 15:03
  • 587

VS2013/2012 下无法打开 源 文件“stdafx.h”的解决方法

VS2013/2012下代码一写上去保存就报错了,下方提示无法打开 源 文件“stdafx.h” 如图: 百度了一下,对于VS2010有这样的方法可以解决: 在项目属性中...
  • maxsky
  • maxsky
  • 2013年12月15日 20:39
  • 43553

找不到#include "stdafx.h"解决办法

今天小狼狼照着老师给的代码敲了一段带多线程的代码,其中报错:找不到#include "stdafx.h" 谷哥是个好字典,不要建立一个简单的空工程,要建立一个简单的程序,就自动添加这个头文件了...
  • xinyouliang
  • xinyouliang
  • 2016年05月16日 23:50
  • 1234

“stdafx.h”: No such file or directory

1、报错 这里的错误是,你包含了头文件 #include “stdafx.h” 产生所产生的,大概你是创建的空项目,却包含了这个头文件。 2、解决办法 办法一  将头文件替...
  • ChristienYang
  • ChristienYang
  • 2017年04月07日 16:30
  • 662
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从 LNK2005 看 stdafx.h
举报原因:
原因补充:

(最多只允许输入30个字)