【发布时间】:2015-02-12 23:51:50
【问题描述】:
DLL (my.dll) 由 Windows 时间服务加载。它有一个关联的日志,该日志使用 wevtutil im mymanfile.man 向 Windows 事件日志服务注册。
我使用 VS12 库重新构建了项目,现在在加载 my.dll 时遇到问题。它根本没有被触及 - 没有记录发生,远程调试不起作用,因为它没有被加载。
我用dependency walker查看了它并解决了大部分的依赖问题,除了一堆API_MS_WIN_*依赖,我认为这只是噪音而不是真正的根本原因。
我需要更多帮助来找出可能导致系统日志中出现“找不到指定模块 0x8007007E”错误的原因。 Windows 如何确定 DLL 不可加载?当我从 vs10 更改为 vs12 库时,可能会缺少什么?为服务(例如 w32time)加载 DLL 的 Windows 过程是什么?
【问题讨论】:
-
如果是加载 dll 的进程,ProcessMonitor 是调试运行时 DLL 加载失败的好工具。但作为一项服务,我认为这行不通。如果您可以制作一个尝试加载您的 DLL 的小型线束应用程序(并且大概以类似的方式失败)并查看是否可以帮助您。
-
提供具体的复制步骤,并以有一天会帮助其他人的方式表达您的问题!谢谢!
-
启用加载程序快照是解决此问题的官方方法。但是,是的,为了方便,Process Monitor 很难被击败。
-
@MikeVine 我看过进程监视器,但我不确定如何使用它来调试我的 dll 的运行时错误。有没有可以推荐的地方的指南?非常感谢。
标签: c++