error LNK2005: _DllMain@12 already defined in MSVCRTD.lib

简介:

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

【错误信息】:

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

【分析原因】:

    这篇文章:《在Visual C++中以错误的顺序链接CRT库和MFC库时出现LNK2005错误》详细分析和说明了产生这种错误的原因。

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

【解决方法】:


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

 
 
  1. >    Searching D:\vs2008\VC\lib\MSVCRTD.lib: 
  2. >    Searching D:\vs2008\VC\atlmfc\lib\mfcs90ud.lib: 
     由此可以看出,默认情况下,先链接了CRT库MSVCRTD.lib,然后链接的是MFC的库mfcs90ud.lib,因此,需要强制改变一下它们的链接顺序。

      选择“项目 -> 属性 -> 链接器 -> 输入”栏,在其中的“忽略特定的库”这一栏输入:MSVCRTD.lib mfcs90ud.lib, 然后,在“附加库”这一栏中输入: mfcs90ud.lib MSVCRTD.lib  问题即可解决。
 
【知识扩展】:

顺便普及一下编译参数/VERBOSE的其他用法。  该说明的官方网址点击: 这里
 


本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/571350,如需转载请自行联系原作者
相关文章
|
编解码 C++ Python
成功解决LINK : fatal error LNK1181: 无法打开输入文件“avdevice.lib” error: command 'D:\\Program Files (x86)\\Micr
成功解决LINK : fatal error LNK1181: 无法打开输入文件“avdevice.lib” error: command 'D:\\Program Files (x86)\\Micr
成功解决LINK : fatal error LNK1181: 无法打开输入文件“avdevice.lib” error: command 'D:\\Program Files (x86)\\Micr
|
6月前
|
开发工具 C++ Windows
error LNK1104: 无法打开文件“MSCOREE.lib”
error LNK1104: 无法打开文件“MSCOREE.lib”
109 0
LINK : fatal error LNK1181: 无法打开输入文件“a.lib,b.lib” 可能原因是什么?
LINK : fatal error LNK1181: 无法打开输入文件“a.lib,b.lib” 可能原因是什么?
|
C++ Windows
编译OpenJDK11:fatal error LNK1104: cannot open file ‘kernel32.lib‘
编译OpenJDK11:fatal error LNK1104: cannot open file ‘kernel32.lib‘
240 0
|
Windows
WINDOWS编译ffmpeg:LINK : fatal error LNK1104: 无法打开文件“LIBCMT.lib”
WINDOWS编译ffmpeg:LINK : fatal error LNK1104: 无法打开文件“LIBCMT.lib”
484 0
|
Linux C语言 C++
VS编译出错:fatal error C1083: 无法打开包括文件:“stdbool.h”: No such file or directory
VS编译出错:fatal error C1083: 无法打开包括文件:“stdbool.h”: No such file or directory
705 0
|
C++
cygwin/msys: fatal error LNK1104: 无法打开文件“kernel32.lib”
cygwin/msys: fatal error LNK1104: 无法打开文件“kernel32.lib”
172 0
编译OpenJDK12:globalDefinitions_visCPP.hpp(46): fatal error C1083:inttypes.h No such file or directory
编译OpenJDK12:globalDefinitions_visCPP.hpp(46): fatal error C1083:inttypes.h No such file or directory
123 0
|
开发工具 Windows
“basetsd.h”: No such file or directory,LINK : fatal error LNK1158: 无法运行“rc.exe”报错
无法打开包括文件: “basetsd.h”: No such file or directory 解决方案
“basetsd.h”: No such file or directory,LINK : fatal error LNK1158: 无法运行“rc.exe”报错
|
C++
Vs2015 遇到 CL:fatal error c1510 cannot load language clui.dll
网上说什么点击修复VS,修改VS的,经验证都不好使,直接下载这个库,放在system32/64下面皆可以了
191 0
Vs2015 遇到 CL:fatal error c1510 cannot load language clui.dll

热门文章

最新文章