错误 LNK2005:_DllMain@12 已在 MSVCRT.lib 中定义

新手上路,请多包涵

我收到此链接器错误。

mfcs80.lib(dllmodul.obj):错误 LNK2005:_DllMain@12 已在 MSVCRT.lib(dllmain.obj) 中定义

请告诉我消除此错误的正确方法。我在微软支持网站上阅读了关于这个错误的解决方案,但它并没有太大帮助。

我正在使用带有平台 SDK 的 VS 2005

原文由 Soumya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

如果您彻底阅读链接器错误并应用一些知识,您可能会自己到达那里:

链接器将许多已编译的对象和库链接在一起以获取二进制文件。

每个对象/库描述

  • 它期望在其他对象中出现什么符号
  • 它定义了什么符号

如果两个对象定义了相同的符号,你就会得到这个链接器错误。在您的情况下, mfcs80.lib 和 MSVCRT.lib 都定义了 _DllMain@12 符号。

摆脱错误:

  1. 找出您真正需要的两个库中的哪一个
  2. 了解如何告诉链接器不要使用另一个链接器(例如使用 James Hopkin 的提示

原文由 xtofl 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您的解决方案有多个导出相同符号的项目,也会发生这种情况。 For example if you have sub-project that builds foo.dll with a foo.def file that exports DoFoo and a sub-project for bar.dll with一个 bar.def 导出的文件 DoFoo ,会发生冲突,这是您在链接时会看到的错误。

原文由 dmedine 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题