静态库隐藏其他静态库中的符号

时间:2012-06-09 20:33:43

标签: c++ visual-c++

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

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

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

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

这可以在没有以下解决方法的情况下解决吗?

  • 动态链接。

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

    这可能会导致B中出现未知的副作用。

(在我的具体案例中,A.lib是Freetype而B.lib是SFML - 但问题是普遍的。)

0 个答案:

没有答案