本文主要分析和解决编译链接时产生的 LNK2005 错误。

【错误信息】:

mfcs90ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)

【分析原因】:

简单地说,就是产生错误的工程同时使用了CRT库和MFC库,并且链接顺序不对,CRT 库对 new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。

【解决方法】:

在“项目 -> 属性 -> 链接器 -> 命令行”栏中,输入 /verbose:lib编译参数,这样,就可以在output窗口看到链接时搜索的库的先后顺序,对于本问题,你一定可以看到类似下面的先后输出:

>    Searching D:\vs2008\VC\lib\MSVCRTD.lib:
>    Searching D:\vs2008\VC\atlmfc\lib\mfcs90ud.lib:

由此可以看出,默认情况下,先链接了CRT库MSVCRTD.lib,然后链接的是MFC的库mfcs90ud.lib,因此,需要强制改变一下它们的链接顺序。
     选择“项目 -> 属性 -> 链接器 -> 输入”栏,在其中的“忽略特定的库”这一栏输入:MSVCRTD.lib mfcs90ud.lib, 然后,在“附加库”这一栏中输入: mfcs90ud.lib MSVCRTD.lib  问题即可解决。

对于这类问题,错误信息 mfcs90ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)

有两个关键点,谁报错(mfcs90ud.lib),与谁冲突(MSVCRTD.lib),根据这两个库来寻找问题根源

error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义相关推荐

  1. mfcs100ud.lib(dllmodul.obj):error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义

    mfcs100ud.lib(dllmodul.obj):error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义 简单地说,就是产生错误的 ...

  2. VS2010编译静态链接MFC的OCX遇到的问题:nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 已经在 LIBCMTD.lib(dllm

    打开工程属性页,配置属性->链接器->输入,忽略特定默认库添加 LIBCMTD.lib;nafxcwd.lib 附加依赖项添加 nafxcwd.lib;LIBCMTD.lib 目的是调整依 ...

  3. error LNK2005: _DllMain@12 already defined in MSVC

    error LNK2005: _DllMain@12 already defined in MSVC 方案一. 编程中经常能遇到LNK2005错误--重复定义错误,其实LNK2005错误并不是一个很难 ...

  4. error LNK2005: _DllMain@12 already defined in MSVC 2009-10-29 17:49

    error LNK2005: _DllMain@12 already defined in MSVC 方案一. 编程中经常能遇到LNK2005错误--重复定义错误,其实LNK2005错误并不是一个很难 ...

  5. error LNK2005: _DllMain@12 already defined in xxx 的应对

    error LNK2005: _DllMain@12 already defined in MSVC 方案一. 编程中经常能遇到LNK2005错误--重复定义错误,其实LNK2005错误并不是一个很难 ...

  6. ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义

    FROM: http://blog.csdn.net/sptoor/article/details/6203376 很久没有写程式设计入门知识的相关文章了,这篇文章要来谈谈程式库 (Library) ...

  7. msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义

    转载 很需要补充的知识. 可惜网络阅读一直不是强项. 目前实在有点看不进去. 先保存下来吧... 牛到连评论都是贼深奥滴! 很久没有写程式设计入门知识的相关文章了,这篇文章要来谈谈程式库 (Libra ...

  8. uafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in main.obj

    如果出现这种错误:"uafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in main.obj &q ...

  9. nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined

    如果开始用了一个ATL的Dll工程,然后为了在这个dll工程里面使用MFC, 在里面加入MFC支持 在stdafx.h的atlbase.h前面加入 #include <afxwin.h> ...

最新文章

  1. Java中Thread中的实例方法_Java多线程2:Thread中的实例方法
  2. 自动化监控--zabbix-get安装使用详解
  3. HDU1421 搬寝室
  4. System Test GIS压力测试利器
  5. 读tomcat源码,随笔类图
  6. MySQL 事物隔离级别
  7. 台式机dp接口_精品导购:你想要的商务台式机 都在这里了!
  8. python如何给一组数据打标签_给数据集打标签python代码实现(1)
  9. linux怎么添加中文服务器,linux不支持中文怎么办_网站服务器运行维护
  10. java骨架_基于Mat变换的骨架提取Java
  11. 机器学习入门笔记(二):线性模型
  12. 什么样的人适合学编程?
  13. 局部替换算法最小生成树
  14. java 串行_java串行化
  15. 金融相关计算机面试题,银行及其他金融企业笔试和面试经验
  16. 数据的写出(FileWriter)
  17. EVE-NG模拟器简述
  18. 上海领科作为A-Level领军学校,为什么要开设IB课程?
  19. 商米机V2和V1内置打印机说明
  20. C++ qsort用法

热门文章

  1. 白话零知识证明(二)
  2. 对话线性资本郑灿:新一代AI公司的魅力与使命
  3. 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)
  4. 单片机 TM4C123GXL 学习 例程
  5. 鸿蒙起源轩辕厉害吗,同为上古神兵,鸣鸿刀与轩辕剑相比哪个更厉害?
  6. i春秋_我很简单_解题记录
  7. python word 插入转下页及接上页(win32com)
  8. 对于支付宝里面推荐的基金大家怎么看待呢?
  9. python摄像头实时人脸检测数据收集
  10. PHP对接twitter三方登录-WEB版