MFC学习篇(二):error LNK2005 及其解决方法
环境: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 库对 new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 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了
最新文章
- 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
- Android+PHP+MYSQL把数据库中的数据显示在Android界面上
- CGGeometry.h 文件详解
- 2016款MACBOOK PRO触控条版 安装WIN10初体验 及 无奈退货记
- netty4虚拟内存不断飙升
- 利用SPM工具运行自己创建的小组件(使用common-model向后台接口请求数据)
- Python的sorted函数应用
- iOS 程序报错:reason: [NSArrayI addObject:]: unrecognized selector sent to instance
- XH
- HTML5鼠标hover的时候图片放大的效果展示
- JAXB完毕XML与Java对象的互转
- hdu2034java
- hdu 5607 graph (矩阵乘法快速幂)
- OSG消锯齿
- ios 集合总结
- Yii -- framework 目录结构说明
- guava Lists.transform使用
- Django最简单的从请求过程
- Spring02-注入和注解方式操作
- STL基础4:deque
热门文章
- git 忽略文件[.gitignore]常用配置
- 将登录代码模块化,然后用add address接口来调用它,success!
- Vue如何tab切换高亮最简易方法
- 设置NODE_ENV=test环境变量
- type=";application/javascript";
- JavaMelody开源系统性能监控
- HDU——2824 The Euler function
- spring-cloud-starter-hystrix(断路器)服务不通或者调用失败后的错误处理和回调
- Filter过滤器机制
- 美河LINUX 内核学习视频