3

如果我有一个可执行文件并且一个库使用另一个库的不同版本,这是否有问题。

例子:

如果我有一个可执行文件:A.exe,它基本上包装并依赖于一个静态库 A.lib

A.exe 和 A.lib 都需要另一个库 B.lib

如果我有这样的情况:

A.lib 库包括 B.lib 版本 1(使用此库中的头文件) A.exe 可执行文件包括 B.lib 版本 2 A.exe 可执行文件链接到 B.lib 版本 2

在什么情况下会出现问题?

谢谢

4

1 回答 1

2

如果 B1.Lib 和 B2.Lib 中都存在相同的函数,并且都链接到 A.exe,那么您最终可能会遇到问题。基本上,如果 B1::fn 向 B2::fn 返回不同的结果,并且 A.Lib 依赖于 B1 结果,而 A.exe 依赖于 B2 结果,则您有一个主要问题。链接器只会链接到它找到的第一个实现,您不能 100% 确定它会在 B1 或 B2 中。

实际上,重写 A.lib 以使用 B2.lib 更安全。没有命名空间是你的朋友......

于 2010-08-26T08:45:59.980 回答