Почему файлы LIB такие двуличный характер?

Я пытаюсь понять этот бизнес LIB-файлов в Microsoft Windows, и я только что сделал открытие, которое - я надеюсь - развеет путаницу, которая до сих пор не позволяла мне получить четкое представление о проблеме. То есть, файлы LIB - это не тот тип файлов, который предполагает их расширение.

:: cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib"

:: lib /nologo /list Ad1.Lib
obj\i386\activdbgid.obj
obj\i386\activscpid.obj
obj\i386\ad1exid.obj
obj\i386\dbgpropid.obj
obj\i386\dispexid.obj

:: lib /nologo /list oledb.lib
o:\winmain.obj.x86fre\enduser\…\oledb\uuid\objfre\i386\oledbiid.obj
o:\winmain.obj.x86fre\enduser\…\oledb\uuid\objfre\i386\oledbnewiid.obj
o:\winmain.obj.x86fre\enduser\…\oledb\uuid\objfre\i386\cmdtreeiid.obj
o:\winmain.obj.x86fre\enduser\…\oledb\uuid\objfre\i386\oledbdepiid.obj

:: lib /nologo /list AdvAPI32.Lib | sort | uniq -c
    731 ADVAPI32.dll

Первые два примера содержат объектные файлы (отображаются как относительные или абсолютные пути при отображении в lib.exe полезность). Однако третий пример содержит только 731 ссылку на DLL. (Я полагаю, lib.exe не предназначен для отображения более полезной информации для этого типа файлов.)

Некоторые из них содержат объектные файлы, и они являются статическими библиотеками. Другие содержат символы и являются библиотеками импорта. (Здесь есть краткое объяснение .)

Таким образом, статические библиотеки кажутся эквивалентами файлов .a в Linux, а библиотеки DLL соответствуют .so файлов в Linux. (Кстати, как бы импортированные библиотеки вписывались в эту картину эквивалентности Windows / Linux?)

Теперь мне интересно, почему это так? Почему Microsoft решила предоставить библиотекам импорта то же расширение файла, что и статические библиотеки? (Я понимаю, что исторически статические библиотеки были первыми, как примитивные формы жизни предшествовали более сложным формам.) Почему бы им не сказать, хорошо, вот эти библиотеки нового типа, они будут называться библиотеками импорта, и они будут иметь расширение файла .ILB (или что-то еще)?

49
задан Community 23 May 2017 в 02:09
поделиться