如何找出为什么我的DLL依赖于zlib1.dll?

时间:2009-09-22 13:22:32

标签: visual-studio dll

我在VS2008中开发了一个DLL。当我在Dependency Walker中检查DLL时,我可以看到对zlib1.dll的依赖。我怎样才能知道它来自哪里?我的DLL(静态)链接到HDF5.lib,HDF5_CPP.lib和GSL.lib。我没有包含任何zlib标题,所以我对此有点无能为力。我知道HDF5依赖于zlib,但我尝试使用预编译的HDF5以及自编的HDF5,两者都无济于事。

事情是我想让分发尽可能简单;这就是为什么我静态链接我使用的所有库。有趣的是,我链接zlib1.lib;毫无疑问,为什么zlib1.dll仍然是一个依赖。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

按照依赖工具中的树。 右侧树显示模块依赖性的“树”。 单击该树中的zlib1.dll,右上角将显示链接到该模块的模块正在使用的函数列表。在您的项目中搜索以查看您使用它们的位置。

答案 1 :(得分:0)

zlib1.lib是dll lib,而不是zlib的静态lib。您需要获取并构建zlib发行版的静态lib部分。我没有构建zlib ...但是其他一些项目有xxx.lib和xxxlib.lib,第二种形式是'正确的'静态库。

On / MT:/ MT仅影响c运行时选择:/ MT向libc.lib添加链接器依赖关系 - 它将c-runtime静态链接到二进制文件中。相反/ MD为msvcrt.lib(一个lib文件)添加了一个链接器依赖项,其中包含对msvcr90.dll的引用