如果我有一个可执行文件和一个库使用不同的,这是一个问题吗? 另一个库的版本。
示例:
如果我有一个可执行文件: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
在什么情况下会出现问题?
谢谢
最佳答案
如果 B1.Lib 和 B2.Lib 中存在相同的函数,并且都链接到 A.exe,您可能会遇到问题。基本上,如果 B1::fn 向 B2::fn 返回不同的结果,并且 A.Lib 依赖于 B1 结果,而 A.exe 依赖于 B2 结果,那么您就会遇到重大问题。链接器只会链接到它找到的第一个实现,您不能 100% 确定它会在 B1 或 B2 中。
实际上,重写 A.lib 以使用 B2.lib 更为安全。命名空间是你的 friend 失败了......
关于c++ - 关于链接和包含不同版本库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573314/