Traditional import libraries, i.e., libraries that describe the exports from one image for use by another, typically follow the layout described in 7. Archive (Library) File Format. The primary difference is that import library members contain pseudo-object files instead of real ones, where each member includes the section contributions needed to build the Import Tables described in Section 6.4. The .idata Section. The linker generates this archive while building the exporting application.
The section contributions for an import can be inferred from a small set of information. The linker can either generate the complete, verbose information into the import library for each member at the time of the library’s creation, or it can write only the canonical information to the library and let the application that later uses it generate the necessary data on-the-fly.
In an import library with the long format, a single member contains the following information:
Archive member header
File header
Section headers
Data corresponding to each of the section headers COFF symbol table
Strings
In contrast a short import library is written as follows:
Archive member header
Import header
Null-terminated import name string
Null-terminated dll name string
This is sufficient information to accurately reconstruct the entire contents of the member at the time of its use.