【发布时间】:2014-04-10 09:30:47
【问题描述】:
我的 VS 项目有一个 COM dll 输出,它适用于 32 位版本和调试,适用于 64 位版本,但无法注册 64 位调试。
它失败并出现以下错误:
模块“(...).dll”加载失败。
确保二进制文件已存储 在指定的路径或调试它以检查是否存在问题 二进制或相关的 .DLL 文件。
指定的模块不能是 找到了。
- 已经为 VS2008 安装了 SP1(修复了一些缺少的依赖项)
- %windir%/system32/regsvr32 或 %windir%/sysWOW64/regsvr32 失败
- 事件查看器未显示任何相关内容(即应用程序错误)
- SxsTrace 没有捕捉到任何东西:
- sxstrace 跟踪 -logfile:sxstrace.etl
- 执行 regsvr32
- sxstrace 解析 -logfile:sxstrace.etl -outfile:sxstrace.txt
- 检查 sxstrace.txt
- dependency walker 不显示任何丢失的依赖项(丢失的依赖项与发布 dll 完全相同)并且 64 位发布和 64 位调试依赖项之间没有区别(除非某些调试依赖项而不是发布那些)
如何检索有关错误的更多信息?
已经为此浪费了几天时间,还要等几周......!
【问题讨论】:
-
不要再使用Depends了,很久没维护了,不适合找现代可执行文件的依赖。改用 SysInternals 的进程监视器。您会看到 regsvr32.exe 正在搜索 DLL,但没有找到它。不要将 DLL 存储在 c:\windows 目录中,文件系统重定向器会造成问题。
标签: c++ debugging dll 64-bit regsvr32