2012-02-23 61 views
1

我有我自己的custom.dll(C++,Windows)库,它依赖于:zlib.dll,iconv.dll等。 custom.dll由custom.exe加载。查找DLL的依赖模块

在C++/WinAPI中是否可以找到custom.dll在运行时依赖的模块列表?

有一个函数EnumProcessModules用于处理。

是否有某些动态库被进程加载? 作为示例,依赖walker实用程序fileInfo插件正确显示此信息。

+0

看看[程序化查找依赖关系(C#)] http://stackoverflow.com/questions/450039/how-to-programmatically-get-dll-dependencies。这个qn。适用于C#,但答案中有一些有用的链接。 – PermanentGuest 2012-02-23 10:02:02

+0

当然,使用EnumProcessModules()。在LoadLibrary()DLL之前和之后两次。这种差别大概是你感兴趣的。很难看到这样做顺便说一句。 – 2012-02-23 10:35:45

+0

@HansPassant:错过了共享依赖关系。例如。 'Kernel32.DLL'不会显示出来。 – MSalters 2012-02-23 11:00:20

回答

3

看看依赖沃克。它完全符合你的要求。 http://www.dependencywalker.com

+1

丹尼斯索洛沃夫要求运行时解决方案,但+1,这是非常酷的实用程序,我用了好几年。 – rkosegi 2012-02-23 10:20:11

+0

谢谢,但我需要它在我的源代码中执行。 – 2012-02-23 10:21:32

+0

您是否在寻找动态负载?例如:LoadLibrary?取决于那个......否则,我没有彻底阅读...... – JimR 2012-02-23 10:23:36