如何以编程方式在C ++或Python中列出DLL的依赖项?

时间:2015-11-23 22:06:16

标签: python c++ dll

我目前正在使用Boost Python为C ++项目编写Python接口。问题是如果缺少DLL,Python会给我们一个非常无用的错误消息:

  

ImportError:DLL加载失败:找不到指定的模块。

根据this site,无法显示比此更多的信息。

现在,这个大问题。我不能使用依赖walker或dumpbin,因为我们需要能够以编程方式确定缺少哪个DLL。好消息是我们只需要检查第一级依赖项。因此,如果my.exe依赖于a.dll,b.dll和c.dll,那么这是我们唯一感兴趣的DLL集合。如果a,b和c都是它们应该存在的地方然后我的工作就完成了。

我已经找到this MSDN page on enumerating for a running process但是无法找到如何为非运行的.exe或卸载的.dll找到这样做。我最接近的是一篇关于LoadLibraryEx函数*的MSDN文章。但是,我不能为我的生活弄清楚如何从返回的HMODULE中获取依赖表。

所以,64,000美元的问题是:如何从HMODULE获得.exe / .dll依赖项?更好的问题是:这是我获得依赖关系的地方吗?如果没有那么我在哪里可以找到它?

最佳解决方案是使用C ++,但我们也非常乐意拥有Python解决方案。任何帮助或建议将不胜感激。感谢。

*我链接了文章但我的代表不够高,无法在一个问题中发布两个链接。 :)

0 个答案:

没有答案