【问题标题】:How to prevent double inclusion of a .lib when inheriting dependencies?继承依赖项时如何防止双重包含.lib?
【发布时间】:2010-03-08 02:52:52
【问题描述】:

我正在处理一个需要两个库(A 和 B)的 Visual C++ 2008 项目,它们都是使用特定的 .lib (C) 编译的。当我编译我的项目时,我再次被要求使用 C,因此我在其他库中指定它。然后一切正常,直到链接阶段,我得到了不止一次定义的外部符号的错误。有没有办法将它们从链接中排除?

谢谢
托马索

【问题讨论】:

  • 你收到了什么错误信息?
  • 我没有日志了,请阅读我对帖子的回复,我已通过在链接器调用中添加 /NODEFAULTLIB:library 选项来解决。

标签: c++ visual-studio-2008 dependencies


【解决方案1】:

这听起来像是在添加这个库的两个不同版本(调试/发布、MT/ST 等)。否则链接器将忽略第二个。

【讨论】:

  • A 和 B 都链接到同一个 C.lib
  • @tunnuz:链接器是否从那个库中对你大喊大叫?还是它们来自运行时库?如果是后者,那么这意味着您正在尝试链接不同版本的 RTL。
  • 符号来自共享的.lib。
【解决方案2】:

我通过在链接器选项中指定 /NODEFAULTLIB:library 解决了这个问题。我不知道这应该是什么意思……Vis​​ual Studio 建议这样做。

【讨论】:

    猜你喜欢
    • 2013-06-20
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2017-05-30
    • 2014-07-25
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多