静态库(* .lib)文件使用哪种格式?我在哪里可以找到* .LIB文件结构/格式的“官方”规范?

时间:2010-03-03 13:21:02

标签: visual-studio gcc mingw static-libraries

刚才我发现* nix系统中的静态库,换句话说* .a库 只不过是ar fromat中的可重定位文件(* .o文件)的档案。

  1. Windows中的静态库(* .lib文件)怎么样?他们是哪种格式的?

  2. 我找到了一篇解释* .lib文件结构的文章(archived copy 1archived copy 2)。但是我在哪里可以找到* .lib文件结构/格式的“官方”规范?

  3. 除了mingw的ar.exe之外,还有来自Microsoft的任何工具,它提取* .lib&的可重定位对象。 * .a文件?

  4. 修改

    我想知道为什么我无法解决这个问题。如果没有官方规格。那么编译器('链接器'更正确)编写器如何使用* .LIB文件?

2 个答案:

答案 0 :(得分:11)

我发现* .LIB文件使用ar文件格式。

官方规格:第7节Microsoft Portable Executable and Common Object File Format Specification的“归档(库)文件格式”描述了这种格式。

答案 1 :(得分:2)

mingw的ar在* .lib文件上工作得很好 - 甚至是在VisualStudio下创建的文件。

我们实际上曾经使用它来提取我们需要的库的一部分,当它包含一些我们无法链接的其他东西时(由于与其他库的冲突)。有点hacky,但它的确有效。