вариант

аюсь понять этот бизнес с файлами 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 файлы в линуксе. (Кстати, как библиотеки импорта вписались бы в эту картину эквивалентности Windows / Linux?)

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

Ответы на вопрос(1)

Ваш ответ на вопрос