Lnk2005 问题
首先感谢http://www.cnitblog.com/vcleaner/archive/2005/05/25/203.html这个地址的作者
另外自己参考了msdn的一些信息,地址:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vccomp/html/d9587adc-68be-425c-8a30-15dbc86717a4.htm
为了方便自己查询,转载部分:
造成LNK2005错误主要有以下几种情况:
1. 重复定义全局变量。
2. 头文件的包含重复。
3. 使用第三方的库造成的。
这种情况主要是C运行期函数库和MFC的库冲突造成的。
具体的办法就是将那个提示出错的库放到另外一个库的前面。
另外选择不同的C函数库,可能会引起这个错误。
微软和C有两种C运行期函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。
另外一种是支持多线程的:msvcrt.lib。
如果一个工程里,这两种函数库混合使用,可能会引起这个错误,
一般情况下它需要MFC的库先于C运行期函数库被链接,
因此建议使用支持多线程的msvcrt.lib。
所以在使用第三方的库之前首先要知道它链接的是什么库,
否则就可能造成LNK2005错误。
如果不得不使用第三方的库,可以尝试按下面所说的方法修改,
但不能保证一定能解决问题,前两种方法是微软提供的:
A、选择VC菜单Project->Settings->Link->Catagory选择Input,
再在Ignore libraries 的Edit栏中填入你需要忽略的库,
如:Nafxcwd.lib;Libcmtd.lib。
然后在Object/library Modules的Edit栏中填入正确的库的顺序,
这里需要你能确定什么是正确的顺序,呵呵,God bless you!
B、选择VC菜单Project->Settings->Link页,
然后在Project Options的Edit栏中输入/verbose:lib,
这样就可以在编译链接程序过程中在输出窗口看到链接的顺序了。
C、选择VC菜单Project->Settings->C/C++页,
Catagory选择Code Generation后
再在User Runtime libraray中选择MultiThread DLL等其他库,逐一尝试。
本人所遇到的问题是第3类
调试的时候,先采用B方法的/verbose:lib,然后A方法
本人在未看到上述方法,采用都是微软msdn提供的:若要修复,请将 /FORCE:MULTIPLE 添加到链接器命令行选项,并确保 uuid.lib 是引用的第一个库。
缺点就是:会出现Lnk4006的警告
备注:
在Lnk4098中有一份忽略列表可以参考
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vccomp/html/1f1b1408-1316-4e34-80f5-6a02f2db0ac1.htm
无论生活、还是技术,一切都不断的学习和更新~~~努力~
标签:
LnkXXXX
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞