REGSVR32查询。 模块“xxxxx.dll”未能加载

我有一个关于在Windows 7 x64下注册* .dll的问题。

我已经尝试将* .dll放在C:/ Windows / System32和C:/ Windows / SysWOW64中,并尝试在提升的命令提示符下注册“regsvr32 xxxxx.dll”。 我也试图从一个单独的目录注册它。 它响应以下错误:

The module "xxxxx.dll" failed to load. Make sure the binary is stored at the specified path or debug it to check for problems with the binary or dependent .DLL files. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail. 

EventLog指出:

 Activation context generation failed for "C:\(path-to-dll) Dependent Assembly Microsoft.VC90.ATL,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis 

NB我已经安装了x86和x64 Microsoft Visual C ++ 2010 Redistributables。

有趣的是,我试图在我的工作64位Windows 7笔记本电脑上注册相同的* .dll,并按预期注册。 我猜这是倾向于某种C ++依赖关系丢失/ ATL相关的事实?

如果有人能够帮助我指出正确的方向或者说明这个问题, 我会感激不尽。

问候。

这几乎肯定是由于缺少依赖性。 使用像Dependency Walker这样的工具来查找DLL所需的依赖关系。 或者,如果DLL是由第三方提供的,请阅读应该指定所需依赖项的文档。

请注意, Microsoft.VC90.ATL表示MSVC的版本9是VS2008。 所以你需要安装MSVC 2008运行时才能满足这个依赖。 它看起来像你错误地安装了MSVC 2010运行时。

最后,请不要将文件放入系统目录。 它属于系统,不应该由您修改。

从属程序集Microsoft.VC90.ATL,processorArchitecture =“x86”

这表示缺少Visual C ++运行时模块(请参阅Visual C ++库作为共享并行程序集 )。 它可以作为可再分发的安装程序( 这大概是你需要的; x86变体),你需要在注册你的DLL(反过来依赖于缺失的组件)之前安装它。

我从这个错误信息中解脱了。 在我的二进制路径中,我有一个SPACE 。 刚刚用UNDERSCORE(_)替换了SPACE 。 它为我工作。

因为我通过Regsvr32注册x.dll时也面临同样的问题,可能的原因之一是x.dll可能会被损坏。 要使用点网络代码中的unmanged dll导出功能,您必须使用Dllimport

这也是失败的另一个原因。 我只是碰到了这个。 我使用的是不支持Windows 7的API方法 , 例如PathCchRemoveFileSpec ,我必须更新到较旧的, 不赞成使用的PathRemoveFileSpec 。 我用Dependency Walker来验证这是原因。 依赖沃克说谎了一下。 如果你看看我的屏幕截图(下面),红色部分显示了实际的问题 – 在DLL中无法解析的方法等 – 但蓝色显示的DLL实际上不是问题(这些DLL存在)。 由于Dependency Walker已经很老了,所以它有些陈旧(它过时了,它认为有些东西是不时可用的),但是通常情况下,这也说明了事实……你只需从顶部向下滚动一下左窗格像我一样。 注意自我:请下次向下滚动。 无论如何,一旦我放弃pathcch.h ,一切工作pathcch.h .愉快的编码。

在这里输入图像说明