静态链接到lib并仍然请求DLL

bah*_*bah 4 c dll static-linking

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

Chr*_*ung 10

并非所有lib文件都是静态库.有些是导入库,很可能是你链接的.

如果您的lib文件比相应的dll文件小得多,那么这肯定表明它是一个导入库.

  • `lib/list`也很有用.如果你只看到`.obj`引用,那么它只是静态的.如果它只有`.dll`那么它只是一个导入库.注意:`.lib`文件可能都是. (4认同)
  • 您还可以在.lib文件上运行`dumpbin/exports`,如果最终得到库中所有函数的列表,那么它就是一个导入库. (3认同)

Han*_*ant 7

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