REGSVR32:模块“xxxxx.dll”无法加载...无法找到相关的程序集

问题描述 投票:8回答:5

我在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

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

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

如果有人能帮助我指出正确的方向或对此事有任何额外的启示;我要感激不尽。

问候。

c++ windows dll regsvr32 dependency-walker
5个回答
13
投票

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

请注意,Microsoft.VC90.ATL表示MSVC的版本9,即VS2008。因此,您需要安装MSVC 2008运行时以满足该依赖性。看起来您错误地安装了MSVC 2010运行时。

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


4
投票

依赖程序集Microsoft.VC90.ATL,processorArchitecture =“x86”

这表示缺少Visual C ++运行时模块(请参阅Visual C++ Libraries as Shared Side-by-Side Assemblies)。它可以作为可再发行的安装程序(this可能是你需要的; x86变体),你需要在注册你的DLL之前安装它(它依赖于缺少的组件)。


1
投票

这也是失败的另一个原因。我自己就碰到了这个。我使用的API方法不支持Windows 7,such as PathCchRemoveFileSpec,我必须更新到旧的deprecated PathRemoveFileSpec。我使用Dependency Walker来验证这是原因。依赖沃克有点遗憾。如果你查看我的屏幕截图(下图),红色部分显示了实际问题 - 它无法在DLL中解析的方法等等 - 但是蓝色显示实际上根本不是问题的DLL(这些存在DLL)。由于Dependency Walker太老了,它有点过时(它过时,它认为某些东西不时可用),但通常,它也说实话......你只需要从顶部向下滚动一下左边的窗格就像我一样。自我注意:请下次向下滚动。无论如何,一旦我放弃pathcch.h,一切都工作7.快乐编码。

enter image description here


0
投票

我从这个错误消息中解脱了。在我的二进制路径中,我有一个SPACE。刚刚用SPACE取代了UNDERSCORE(_)。它对我有用。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.