C++ 两个静态库

C++ 两个静态库,c++,windows,visual-studio-2008,C++,Windows,Visual Studio 2008,我目前正在使用vs2008提供一个静态库。我正在构建我的静态库。但是,由于我使用的是另一个静态库,所以有一种方法可以将其打包为单个静态库。这里的原因是,它们将调用我的库中依赖于其他静态库(.lib)的函数。我不知道如何去做,需要一些帮助 查看项目属性|配置属性|图书管理员|概述 将要添加到库中的库(.lib)文件的名称置于“其他依赖项”下 您可能还必须设置“附加库目录”设置,以便它可以找到库。VC++包括一个名为的命令行库管理器。它可以让我习惯 它可能与您的情况无关,但在某些情况下,将第三方库合

我目前正在使用vs2008提供一个静态库。我正在构建我的静态库。但是,由于我使用的是另一个静态库,所以有一种方法可以将其打包为单个静态库。这里的原因是,它们将调用我的库中依赖于其他静态库(.lib)的函数。我不知道如何去做,需要一些帮助

查看项目属性|配置属性|图书管理员|概述

将要添加到库中的库(.lib)文件的名称置于“其他依赖项”下


您可能还必须设置“附加库目录”设置,以便它可以找到库。

VC++包括一个名为的命令行库管理器。它可以让我习惯

它可能与您的情况无关,但在某些情况下,将第三方库合并到您自己的库中,并将其作为库而不是最终应用程序分发(或在许多开源许可证的情况下,源代码),可能会违反该库的许可条款。因此,在这种情况下要小心。

这里有一种方法:

  • 找出静态库中的所有对象文件。这可以通过运行命令
    lib STATICLIB/list
  • 提取列出的每个对象。您必须给出步骤1中的确切名称(
    lib STATICLIB/extract:。\debug\foo.obj
  • 然后,可以将从步骤2中提取的所有对象添加到库中

  • 当我这样做,只是做了一个建设,我看到警告LNK4221:没有找到公共符号,存档成员将无法访问。然后是该库中所有obj文件的大量LNK4006警告。线索?我正在添加的静态库文件中有大量的obj文件,由于我假设我没有使用或引用代码中的所有文件,因此我认为忽略这些警告是可以的……因此我不确定如何消除这些警告,因为我希望保持一个非常干净的构建。您从哪里运行此命令?vs2008命令行?这条路会是什么?实际项目的位置是?@user295030-是,lib.exe将从命令行运行。命令的路径取决于您安装Visual Studio的位置-最简单的方法是运行“Visual Studio命令提示符”来配置您的环境。这比使用acutal.lib要好,我将它作为库的依赖项放在那里?@user295030-不,不是更好。就我个人而言,我建议您的库的用户链接两个静态库。但我愿意让你知道如何按照你在问题中提出的方式来做。