1

我的 .exe 项目依赖于外部静态库 A.lib 和 B.lib。

问题:库 B 内部也使用库 A 并导出其符号。但是使用的 A 版本与 A.lib 不同 - 并且与我的应用程序不兼容。

将我的应用程序与 A.lib 和 B.lib 链接时,B.lib 中包含的 A 符号隐藏了 A.lib 中的正确符号。虽然链接成功,但我的应用程序无法正常工作。

将 B.lib 的所有用法分解到另一个静态库 C.lib 中并没有帮助:C.lib 仍然从 B.lib 导出所有符号。

如果没有以下变通办法,这可以解决吗?

  • 动态链接。

  • 用我的 A.lib 版本重新构建 B。(我可以访问 B 的来源。)

    这可能会在 B 中引起未知的副作用。

(在我的具体情况下,A.lib 是Freetype而 B.lib 是SFML - 但问题是普遍的。)

4

0 回答 0