C++ 链接器错误 - 错误 LNK2005: ... 已定义

Posted

技术标签:

【中文标题】C++ 链接器错误 - 错误 LNK2005: ... 已定义【英文标题】:C++ Linker Errors - error LNK2005: ... already defined 【发布时间】:2022-01-13 12:16:35 【问题描述】:

我有一个项目可以在 x64 位中正确构建,但在 32 位中会抛出如下所示的错误: libeay32-s-MT.lib(err.obj) : 错误 LNK2005: _ERR_error_string 已在 libcrypto.lib(libcrypti-1_1.dll) 中定义

有一个列表,但它们看起来都相似。不确定这是否与它在 32 位中引发错误有关,或者是否与配置中的其他内容有关。有人有类似的吗?我正在使用 VS2017 和 Windows。

【问题讨论】:

【参考方案1】:

错误消息表明问题来自库文件。请检查是否存在重复定义和库的兼容性问题。我建议你阅读这个document,它提供了一些解决方案供你参考。

【讨论】:

我想知道它是否与 VC Distributable 或 Visual Studio 更新有关。这曾经很好用,对我的队友也很有效。 根据您的描述,问题排查困难。 release note可以查看新版VS的一些重大变化,可以使用这些文档排查错误原因。另外,VS的更新会影响缓存,这也可能是报错的原因。如果以上方法都不能解决你的问题,建议你去DC报告问题。

以上是关于C++ 链接器错误 - 错误 LNK2005: ... 已定义的主要内容,如果未能解决你的问题,请参考以下文章

soci ODBC 的 C++ 链接器错误 LNK2019

带有矢量的 LNK2005 错误

LNK2005 错误,因为我有两个并行运行的 c++ 窗口

链接器错误 LNK2038:在发布模式下检测到不匹配

将解决方案 C++ 从 VS2005 升级到 VS2012 出现错误 LNK1181

VS2008(C++)-控制台项目中LNK2005错误的问题