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

11

刚才我发现*nix系统中的静态库,也就是*.a库,实际上就是由relocatable(即*.o文件)在ar格式下打包而成的存档。

  1. 那么Windows系统中的静态库(*.lib文件)是什么格式?

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

  3. 除了mingw的ar.exe之外,还有没有来自Microsoft的工具可以提取*.lib和*.a文件的可重定位对象(relocatable objects)?

编辑:

我想知道为什么我无法回答这个问题。如果没有官方规范,编译器(更准确地说是‘链接器’)的开发人员如何使用*.LIB文件?

2个回答

11

链接的规范是一个docx文件,这里有一个包含当前规范的网页:https://learn.microsoft.com/en-us/windows/desktop/Debug/pe-format#archive-library-file-format - Lekensteyn

2

mingw的ar在*.lib文件上表现得非常好,甚至是在VisualStudio下创建的文件。

我们实际上过去曾经使用它来从库中提取我们需要的部分,当它包含一些我们无法与之链接的其他内容(由于与其他库的冲突)时。有点hacky,但它可以工作。


1
这是一条有用的信息。但这是否意味着*.lib文件也是以ar格式存储的?也许,mingw的 ar.exe正在抽象底层格式并以同样的方式运行。 - claws
不太清楚。我想我主要是在回答第三个问题。 - T.E.D.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接