刚才我发现* nix系统中的静态库,换句话说* .a库 只不过是ar fromat中的可重定位文件(* .o文件)的档案。
Windows中的静态库(* .lib文件)怎么样?他们是哪种格式的?
我找到了一篇解释* .lib文件结构的文章(archived copy 1,archived copy 2)。但是我在哪里可以找到* .lib文件结构/格式的“官方”规范?
除了mingw的ar.exe之外,还有来自Microsoft的任何工具,它提取* .lib&的可重定位对象。 * .a文件?
修改
我想知道为什么我无法解决这个问题。如果没有官方规格。那么编译器('链接器'更正确)编写器如何使用* .LIB文件?
答案 0 :(得分:11)
我发现* .LIB文件使用ar
文件格式。
官方规格:第7节Microsoft Portable Executable and Common Object File Format Specification的“归档(库)文件格式”描述了这种格式。
答案 1 :(得分:2)
mingw的ar
在* .lib文件上工作得很好 - 甚至是在VisualStudio下创建的文件。
我们实际上曾经使用它来提取我们需要的库的一部分,当它包含一些我们无法链接的其他东西时(由于与其他库的冲突)。有点hacky,但它的确有效。