环境:MFC条件下添加原有代码

>nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
>nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in LIBCMTD.lib(new2.obj)
>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete2.obj)

因为是改师姐的代码(→.→,师姐V5),师姐的代码并非在MFC的环境下运行的,故产生了error LNK2005错误,上网一搜,明白了其出错原因,这里想必大家都已经查到了,那我就再啰嗦一遍吧,按照微软的官方解释是这样的:CRT 库对 newdelete 和 DllMain 函数使用弱外部链接。MFC 库也包含 newdelete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。然后起也给出了其在非MFC环境下的解决方法..............

和MFC环境下的解决方法

使用 MFC 库时,务必先链接它们,然后再链接 CRT 库。这可以通过确保项目中的每个文件都首先包含 Msdev\Mfc\Include\Afx.h 来完成。直接包含 (#include <Afx.h>) 或间接包含 (#include <Stdafx.h>) 都可以。Afx.h 包含文件会通过使用 #pragma comment (lib,"<libname>") 指令来强制采用库的正确顺序。

如果源文件的扩展名为 .c,或者该文件的扩展名为 .cpp 但不使用 MFC,则可以创建一个较小的头文件 (Forcelib.h) 并将其放在模块的顶端。这个新的头文件可确保按照正确的顺序搜索库。

Visual C++ 不包含该头文件。要创建此文件,请按照下列步骤操作:

打开 Msdev\Mfc\Include\Afx.h。

选定 #ifndef _AFX_NOFORCE_LIBS 和 #endif //!_AFX_NOFORCE_LIBS 之间的行。

将选定部分复制到 Windows 剪贴板。

创建一个新文本文件。

将剪贴板的内容粘贴到这个新文件中。

将该文件另存为 Msdev\Mfc\Include\Forcelib.h。

但是,由于师姐部分代码牵扯到Linux,所以,不能用#include "stdafx.h"这么简单粗暴的方法

按照这篇博客将MFC静态链接改为动态链接,发现完美解决了

即在VS2010的环境下,Project   →  Propreties    →  General  → Use of MFC      将Use MFC in a Static Library改为  Use MFC in a Shared DLL 就OK了

最新文章

  1. 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
  2. Android+PHP+MYSQL把数据库中的数据显示在Android界面上
  3. CGGeometry.h 文件详解
  4. 2016款MACBOOK PRO触控条版 安装WIN10初体验 及 无奈退货记
  5. netty4虚拟内存不断飙升
  6. 利用SPM工具运行自己创建的小组件(使用common-model向后台接口请求数据)
  7. Python的sorted函数应用
  8. iOS 程序报错:reason: [NSArrayI addObject:]: unrecognized selector sent to instance
  9. XH
  10. HTML5鼠标hover的时候图片放大的效果展示
  11. JAXB完毕XML与Java对象的互转
  12. hdu2034java
  13. hdu 5607 graph (矩阵乘法快速幂)
  14. OSG消锯齿
  15. ios 集合总结
  16. Yii -- framework 目录结构说明
  17. guava Lists.transform使用
  18. Django最简单的从请求过程
  19. Spring02-注入和注解方式操作
  20. STL基础4:deque

热门文章

  1. git 忽略文件[.gitignore]常用配置
  2. 将登录代码模块化,然后用add address接口来调用它,success!
  3. Vue如何tab切换高亮最简易方法
  4. 设置NODE_ENV=test环境变量
  5. type=&quot;application/javascript&quot;
  6. JavaMelody开源系统性能监控
  7. HDU——2824 The Euler function
  8. spring-cloud-starter-hystrix(断路器)服务不通或者调用失败后的错误处理和回调
  9. Filter过滤器机制
  10. 美河LINUX 内核学习视频