无法加载 DLL 文件

Posted

技术标签:

【中文标题】无法加载 DLL 文件【英文标题】:can not load a DLL file 【发布时间】:2011-05-01 18:01:43 【问题描述】:

每次我尝试加载 DLL (COM) 时都会出现以下错误:

LDR:LdrpWalkImportDescriptor() 失败 探查它的清单, ntstatus 0xc0150002

我搜索了很多,但一无所获。 请我真的相信这个网站的专家,我希望能得到这个问题的解决方案。

我知道问题出在清单文件中,但我真的不知道它是什么以及如何解决这个问题

我使用VS2010 C++和LoadLibrary

【问题讨论】:

你没有在 google 上找到this 吗? 当然我找到了,但问题仍然存在 【参考方案1】:

这是来自 ntstatus.h 的错误代码描述:

//
// MessageId: STATUS_SXS_CANT_GEN_ACTCTX
//
// MessageText:
//
// Windows was not able to process the application binding information.
// Please refer to your System Event Log for further information.
//
#define STATUS_SXS_CANT_GEN_ACTCTX       ((NTSTATUS)0xC0150002L)

查看 Windows 事件日志以获取更多信息。一个非常常见的错误是 DLL 所需的 CRT 运行时库未安装在您的计算机中。如果这没有帮助,请发布您在问题中看到的内容。或者联系 COM 组件供应商或作者寻求支持,这是最好的方式。

【讨论】:

【参考方案2】:

Com dll 未使用 loadlibrary 加载。当您为库中实现的对象执行 CoCreateInstance 时,系统会自行加载它们。

问题似乎是缺少 com dll 所依赖的 dll。

【讨论】:

这是非常误导。无论您还是 COM 支持代码调用 LoadLibrary() 都没有区别。 @Hans Passant:对,我添加了说明。仍然感觉 OP 以一种奇怪的方式使用了这个 dll。【参考方案3】:

Google 针对此错误生成的first 和second 链接都表明它通常是由运行时库版本控制引起的。两者都早于 VS2010,但我会从寻找类似的问题开始。您是否尝试过复制第一篇文章中描述的分析步骤?

(DLL 是您创建的吗?如果不是,也许它实际上是使用 VS2008 构建的并且与该帖子完全对应?如果是,也许您可​​以尝试那里推荐的编译调整。)

【讨论】:

不,我没有创建它,我认为这篇文章会对我有所帮助,所以我会按照步骤进行操作,谢谢 Eric

以上是关于无法加载 DLL 文件的主要内容,如果未能解决你的问题,请参考以下文章

无法加载 DLL 文件

无法加载文件或程序集“CefSharp.dll”或其依赖项之一

C# 使用 liblas.dll(无法加载 DLL)

急!office2010 outlook 无法加载信息服务的.DLL文件 ?

无法加载文件或程序集 SMDiagnostics.dll

加载dll失败