本文主要分析和解决编译链接时产生的
LNK2005 错误。
在“项目 -> 属性 -> 链接器 -> 命令行”栏中,输入 /verbose:lib编译参数,这样,就可以在output窗口看到链接时搜索的库的先后顺序,对于本问题,你一定可以看到类似下面的先后输出:
在“项目 -> 属性 -> 链接器 -> 命令行”栏中,输入 /verbose:lib编译参数,这样,就可以在output窗口看到链接时搜索的库的先后顺序,对于本问题,你一定可以看到类似下面的先后输出:
- > Searching D:\vs2008\VC\lib\MSVCRTD.lib:
- > Searching D:\vs2008\VC\atlmfc\lib\mfcs90ud.lib:
由此可以看出,默认情况下,先链接了CRT库MSVCRTD.lib,然后链接的是MFC的库mfcs90ud.lib,因此,需要强制改变一下它们的链接顺序。
选择:菜单“项目”-->“设置”->链接-->Input。
在第一行“对象/库模块”中最前面输入mfcs42.lib;MSVCRTD.lib
在第二行“忽略库”框中,输入mfcs42.lib;MSVCRTD.lib。
确定,重新链接,通过!
选择:菜单“项目”-->“设置”->链接-->Input。
在第一行“对象/库模块”中最前面输入mfcs42.lib;MSVCRTD.lib
在第二行“忽略库”框中,输入mfcs42.lib;MSVCRTD.lib。
确定,重新链接,通过!