【发布时间】:2014-12-31 16:08:14
【问题描述】:
如果我使用的函数具有以下签名:
void foo(int i);
而且这个函数存在于 libxxx.lib 和 libyyy.lib 中(但是每个 lib 文件中函数的实现都不同),那么如果我将我的目标文件链接到这两个 lib 文件会发生什么?我会得到一个函数存在于两个 lib 文件中的错误,还是链接器会选择一个随机函数或其他东西?
【问题讨论】:
-
链接器如何选择随机函数?这没有意义。
-
听起来你需要开始使用命名空间了。
-
是c还是c++,你应该选择一个,因为它们是不同的。
-
一个问题……你为什么不试试呢?有三个选项。链接器错误,将使用最后一个符号,将使用第一个符号。
-
@luk32:实际上还有第四种选择:它的行为将无法预测。更糟糕的是,这似乎是可以预测的,但在未来的某个时候会中断。
标签: c windows static-libraries static-linking