环境: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了

MFC学习篇(二):error LNK2005 及其解决方法的更多相关文章

  1. LoadRunner出现error问题及解决方法总结

    一.Step download timeout (120 seconds) 这是一个经常会遇到的问题,解决得办法走以下步骤:1.   修改run time setting中的请求超时时间,增加到600 ...

  2. navicat连接oracle数据库报ORA-28547: connection to server failed, probable Oracle Net admin error错误的解决方法

    原文:navicat连接oracle数据库报ORA-28547: connection to server failed, probable Oracle Net admin error错误的解决方法 ...

  3. algorithm.sty not found error in LaTeX 解决方法

    参考: algorithm.sty not found error in LaTeX algorithm.sty not found error in LaTeX 解决方法 错误日志: LaTeX E ...

  4. 关于ASP.NET 服务器报错 Server Error in '/' Application Runtime Error 错误及解决方法

    今天遇到一个错误 程序在服务器上运行时报错 先贴上错误代码 自己也在网上找了一些解决方法,把错误定位到服务器的配置文件也就是Web.config的问题, 于是在system.web节点下 加上cust ...

  5. VS2010 "error MSB8011” 解决方法

    http://blog.csdn.net/heihei36/article/details/8923971 —————————————————————————————————————————————— ...

  6. 在Eclipse中执行Andorid test preject提示The connection to adb is down, and a severe error has occured.解决方法

    启动android模拟器时.有时会报The connection to adb is down, and a severe error has occured.的错误.在网友说在任务管理器上把所有ad ...

  7. tomcat启动后access error[730048]的解决方法

    安装了JDK... 配置了系统变量... 解压了tomcat... 配置了系统变量... 点击startup.bat启动了以后,打开浏览器,出现access error 404错误. 仔细看过控制台输 ...

  8. VS编译链接时错误(Error Link2005)的解决方法

    近期参与的项目中使用了公司另外一个同事提供的一个静态库文件.该静态库文件集成了CUDA, OpenCL两个库,用于做图形加速计算,提高视频解码拼接速度.但是在编译链接项目时,VS爆出如下错误: 1&g ...

  9. 在Python中调用glutInit遇到OpenGL.error.NullFunctionError的解决方法

    在window10 64bit + Python环境下,通过pip install PyOpenGL成功之后,无奈执行到glutInit()时候总是报错. OpenGL.error.NullFunct ...

随机推荐

  1. eclipse自动提示配置

    打开Window->Preferences

  2. Spring核心技术(三)——Spring的依赖及其注入(续)

    本文将继续前文,针对依赖注入的细节进行描述 依赖注入细节 如前文所述,开发者可以通过定义Bean的依赖的来引用其他的Bean或者是一些值的,Spring基于XML的配置元数据通过支持一些子元素< ...

  3. Sublime text如何设置快捷键让编写的HTML文件在浏览器预览?

      STEP 1 Tools->Build System->New Build System STEP 2<img src="https://pic3.zhimg.com/ ...

  4. hadoop full cluster 改为伪分布

    https://hadoop.apache.org/docs/r2.7.6/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Di ...

  5. zoj——3624 Count Path Pair

    Count Path Pair Time Limit: 3 Seconds      Memory Limit: 65536 KB You are given four positive intege ...

  6. [bzoj 2190][SDOI2008]仪仗队(线性筛欧拉函数)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 分析:就是要线性筛出欧拉函数... 直接贴代码了: memset(ans,,sizeof ...

  7. YAML/Properties配置文件与Spring Boot(转)

    多年来,Java开发人员依赖于属性文件或xml文件来指定应用程序配置.在企业应用程序中,人们可以为每个环境(如开发,分段和生产)创建单独的文件,以定义相应环境的属性.但是,通过Spring引导,我们可 ...

  8. PHP array_multisort()

    定义和用法 array_multisort() 函数对多个数组或多维数组进行排序. 参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能.第一个数组是要排 ...

  9. How to Use DHCP Relay over LAN? - DrayTek Corp

    Assuming Vigor2960 has two LAN networks. Network Administrator wants that, when the internal DHCP is ...

  10. JWPlayer Uncaught Error: Invalid SRT file

    错误场景: JWPlayer 播放视频,加入了字幕和缩略图: 字幕为Srt格式: 1 00:00:00,000 --> 00:00:02,000 战略管理过程 2 00:00:03,000 -- ...