我目前正在使用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解决方案。任何帮助或建议将不胜感激。感谢。
*我链接了文章但我的代表不够高,无法在一个问题中发布两个链接。 :)