2010-03-17 55 views
3

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

回答

0

这里有一种方法:

  1. 找出静态库中的所有目标文件。这可以通过运行命令lib STATICLIB /list
  2. 提取列出的每个对象。你必须从第1步(lib STATICLIB /extract:.\debug\foo.obj
  3. 可以再加入提取形式步骤2中的所有对象添加到您的图书馆给出确切的名称
+0

你从哪里运行这个命令? vs2008命令行?路径是什么?实际项目在哪里? – user295030 2010-03-17 22:18:13

+0

@ user295030 - 是的,lib.exe将从命令行运行。命令的路径取决于您安装Visual Studio的位置 - 最简单的方法是运行“Visual Studio命令提示符”来配置您的环境。 – 2010-03-17 22:23:44

+0

,这比使用acutal .lib更好,我将它作为依赖项放到我的库中? – user295030 2010-03-17 22:33:07

1

查看项目属性|配置属性|图书管理员|一般

把(.LIB)文件要在“附加依赖”

您可能还需要设置“附加库目录”设置,以便它可以找到添加到您的库库的名称图书馆。

+0

当我这样做,只是做一个构建我看到警告LNK4221:不公开找到的符号,档案成员将无法访问。然后是该库中所有obj文件的大量LNK4006警告。线索?我添加的静态库文件中有大量的obj文件,因为我假设我没有使用或引用我的代码中的所有内容,因此我想也许可以忽略这些警告。因此我不确定如何摆脱这些警告,因为我喜欢保持非常干净的构建。 – user295030 2010-03-17 22:01:03

0

VC++包含名为lib.exe的命令行库管理器。它可以用于我combine both object files and library files into a single library

它可能与您的情况无关,但在某些情况下,将第三方库合并到您自己的应用程序中,并将其作为库而不是最终应用程序进行分发(或者在许多开源许可证的情况下,源)可能违反该图书馆的许可条款。所以在这种情况下请谨慎使用。