В каком формате используются файлы статической библиотеки (* .lib)? Где я могу найти "Официальные" спецификации структуры / формата файла * .LIB? - PullRequest
9 голосов
/ 03 марта 2010

Только сейчас я обнаружил, что статические библиотеки в * nix системах, другими словами * .a библиотеки это не что иное, как архивы перемещаемых объектов (*. o файлы) в ar fromat.

  1. Как насчет статических библиотек (*. Lib файлов) в Windows? В каком формате они?

  2. Я нашел статью ( архивная копия 1 , архивная копия 2 ), в которой объясняется структура файла * .lib. Но где я могу найти «Официальные» спецификации * .lib структуры / формата файла?

  3. Кроме ar.exe mingw, есть ли какой-нибудь инструмент от Microsoft, который извлекает перемещаемые объекты из файлов * .lib & * .a?

EDIT:

Интересно, почему я не могу добраться до этого вопроса. Если нет официальных спецификаций. Тогда как работает компилятор (если быть более точным, компоновщик) с файлами * .LIB?

Ответы [ 2 ]

11 голосов
/ 12 мая 2010

Я обнаружил, что файл * .LIB использует формат файла ar.

Официальные спецификации: Раздел 7. «Формат файла архива (библиотеки)» из Спецификация формата исполняемого файла Microsoft и общего объектного файла описывает этот формат.

2 голосов
/ 03 марта 2010

Mingw's ar прекрасно работает с * .lib файлами - даже с файлами, созданными в VisualStudio.

Мы фактически использовали его в прошлом для извлечения частей библиотеки, в которых мы нуждались, когда она содержала некоторые другие вещи, с которыми мы не могли связать (из-за конфликтов с другими библиотеками). Вроде хак, но это работает.

...