2010-02-10 62 views
4

使用visual studio 2008,我有一个库的.H和一个.LIB文件。 我编写了一个程序,并通过项目属性引用了LIB。 它编译得很好,但是当它运行时,它会要求安装DLL。 如果DLL与EXE在相同的目录中,它可以工作......但是,如果我有LIB,它是不是意味着这些函数是静态链接到我的程序的?c静态链接到lib并仍在请求DLL

感谢

+0

检查http://stackoverflow.com/questions/3573475/how-does-the-import-library-work-details – 2016-09-08 22:56:36

回答

10

并非所有lib文件是静态库。有些是进口图书馆,而且有机会,那就是你连接的东西。

如果您的lib文件比其对应的dll文件小得多,这肯定表明它是一个导入库。

+3

您也可以在.lib文件上运行'dumpbin/exports',如果你最终得到了库中所有函数的列表,那么它就是一个导入库。 – 2010-02-11 01:41:35

+4

'lib/list'也很有用。如果你只看到'.obj'引用,那么它只是静态的。如果它只有'.dll',那么它只是一个导入库。注意:'.lib'文件可能都是。 – 2010-11-16 15:23:29

7

让你的程序使用一个DLL需要一个导入库。它是一个扩展名为.lib的文件,就像静态的.lib文件一样。但它非常小,它只包含由DLL导出的函数列表。链接器需要这样才能将DLL的名称嵌入到导入表中。您可以通过在您的.exe文件上运行Dumpbin.exe/imports来查看此文件。