【问题标题】:How to "combine" two static libraries?如何“组合”两个静态库?
【发布时间】:2020-05-08 22:30:17
【问题描述】:

所以我知道您不能将静态库依赖于另一个库,但我想知道是否有什么东西可以让我将它们组合在一起。我正在尝试在 vstudio 2019 中设置游戏引擎项目文件,并且我想将其编译为静态库。我需要以某种方式将它与 SDL 2 库结合起来,因为我想使用 SDL 创建一些系统。有没有办法我可以做到这一点? 感谢您的帮助。

【问题讨论】:

  • 只需将 .lib 文件添加到您的项目中,它就会自动合并到您的项目中。项目 > 添加现有项目 > 选择 std2.lib
  • 我建议您可以尝试使用Managing a Library 命令从所有库中提取所有目标文件,然后再次使用它来将它们全部组合到一个新库中。

标签: c++ visual-studio static-libraries project setup-project


【解决方案1】:

创建库时,可以在项目的“Librarian”属性中指定“Additional dependencies”。依赖项可能是另一个库。还将“链接库依赖项”设置为“是”,以便包含整个库。

【讨论】:

  • 在我的静态库项目中,链接器属性页面不显示。
  • @Cinsi:我说图书管理员。
【解决方案2】:

当然,您可以让一个静态库依赖于另一个。大致来说,静态库是独立编译对象的集合,具有它们提供的和所需的符号表的“解决”。那些在静态库本身中找不到的符号仍然是依赖项,很可能由另一个静态库提供。

根据您的平台,有一些工具可用于处理已编译的库。在类 Unix 操作系统上,您可以使用 ar 实用程序以各种方式组合静态库(“存档”):

How to merge two "ar" static libraries into one?

在 Windows 上,有 LIB.EXE 工具。见:

How to merge two windows vc static library into one

【讨论】:

  • 我的操作系统是windows 10。这些工具在编译后是否结合了库,我可以在我的Visual Studio项目中以某种方式实现它们吗?这个我不太明白。
  • 您可以执行调用 LIB.exe 的后期构建步骤
  • @Cinsi:1. 是的,它们结合了已经编译的库 2. 我不太喜欢 Windows 和 MSVC,所以我不知道。但 drescherjm 说你可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多