繁体   English   中英

linker 如何解决链接 *.libs 时的歧义?

[英]How linker solves ambiguities when linking *.libs?

在处理未解决的外部问题很长时间后,我发现 VS2010 正在链接 wrong.lib 文件。

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

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

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

Linker 选择了不需要的那个(如上)。

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

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

将 Linker 的 LIB 视为编译器的 header。 LIB 仅具有导出符号的签名,除非它是 static LIB。 LIB 文件没有附加任何版本

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM