Известно, что файл *.lib библиотеки Visual Studio представляет собой архив Unix "ar", содержащий объектные модули в формате COFF. Но я обнаружил, что библиотеки для импорта DLL представляют собой архив небольших кусков (или заглушек), не являющихся COFF-объектами. Примером может служить библиотека VS15\lib\ucrt\ucrt.lib. Эти фрагменты содержат имя функции и ссылку на библиотеку DLL, которая определяет эту функцию. Вот пример (шестнадцатеричный дамп) заглушки для функции puts:
Код: Выделить всё
00-00-FF-FF-00-00-4C-01-39-E9-80-55-26-00-00-00 ......L.9..U&...
93-00-08-00-5F-70-75-74-73-00-61-70-69-2D-6D-73 “..._puts.api-ms
2D-77-69-6E-2D-63-72-74-2D-73-74-64-69-6F-2D-6C -win-crt-stdio-l
31-2D-31-2D-30-2E-64-6C-6C-00 1-1-0.dll.
Это определенно не объект COFF (хотя он содержит 386 сигнатуру архитектуры 0x14C, специфичную для COFF). Я не могу найти документацию по формату этих объектов импорта. Кто-нибудь знает этот формат?
Может быть, это неофициальные спецификации?
Может быть, это какой-то исходный код, который может это обработать формат?
Подробнее здесь:
https://stackoverflow.com/questions/443 ... rt-library