【问题标题】:How linker solves ambiguities when linking *.libs?链接器在链接 *.libs 时如何解决歧义?
【发布时间】:2011-08-13 12:41:00
【问题描述】:

花了很长时间处理未解决的外部问题后,我发现 VS2010 链接了错误的 .lib 文件。

不幸的是,文件以相同的名称命名。

在项目属性中设置了带有链接(不需要)库的文件夹 具有未链接(想要)库的文件夹是从其他属性表继承的

Desired lib 是较新的日期,undesired 是非常旧的。

链接器选择了不需要的(如上)。

链接库的规则是什么? 链接器不应该至少对一些歧义给出警告吗?

编辑: 符号仅在新库中定义。并且仅当我删除旧库时才搜索新库(未更改链接器设置)

【问题讨论】:

    标签: c++ visual-studio-2010 linker


    【解决方案1】:

    将链接器的 LIB 视为编译器的标头。 LIB 仅具有导出符号的签名,除非它是静态 LIB。 LIB 文件没有附加任何版本

    两个 LIB 文件可以有相同的名称,就像两个头文件可以有一样。是你,程序员,必须使用正确的 LIB/头文件。如果链接器没有找到所有的符号,或者符号不正确,它会报错(就像编译器对头文件中不一致的符号所做的那样)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 2010-11-01
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      相关资源
      最近更新 更多