首页 文章

为什么LIB文件具有如此双重性质的野兽?

提问于
浏览
37

我正试图在Microsoft Windows上理解这个LIB文件业务,我刚刚发现了一个发现 - 我希望 - 消除迄今为止阻止我清楚地掌握这个问题的混乱 . 也就是说,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 实用程序显示时显示为相对路径或绝对路径) . 但是,第三个示例仅包含对DLL的731个引用 . (我猜 lib.exe 不是为了显示这类文件的更多有用信息而设计的 . )

一些包含目标文件,它们是静态库 . 其他包含符号,它们是导入库 . (有一个short explanation here . )

所以静态库似乎是Linux上 .a 文件的等价物,而DLL似乎映射到Linux上的 .so 文件 . (顺便说一下,导入库如何适应这个Windows / Linux等效图片?)

现在我告诉他们,好吧,这是这些新类型的库,它们应该被称为导入库,它们应该带有文件扩展名 .ILB (或者其他什么)?

1 回答

  • 7

    因为他们是图书馆 . 为什么要发明一个全新的特定于供应商的扩展,与它们已经特定于供应商的库完全相同?

相关问题