关于无法加载DLL\"***.dll\":找不到指定的模块(异常来自HRESULT:0x8007007E)问题的解决办法
关于无法加载DLL”***.dll”:找不到指定的模块(异常来自HRESULT:0x8007007E)问题的解决办法
最近在编写C#代码的过程中,遇到此问题,网上查找资料后,终于解决了此问题。现将解决方法记录下来,以便以后查看。注:此方法未必能解决所有这类问题,仅供参考。
通常在以下情况下会出现这种异常:
(1)想要在64的系统上运行32位的应用程序并且没有WOW64(Windows-on-Windows 64-bit)子系统的存在。
(2)在编写运行在64位操作系统平台的应用程序时,调用DLL并且此DLL也是在64位操作平台下生成的,此时将有可能出现这类问题(我所遇到的情况)。
解决方法:
方法1:找到这个无法加载的DLL(自动生成或网上下载),然后将此DLL的副本放到C:\Windows\System32的目录下即可。
注:关于WOW64模式
WOW64 (Windows-on-Windows 64-bit)是一个Windows操作系统的子系统, 它为现有的 32 位应用程序提供了 32 位的模拟环境,可以使大多数 32 位应用程序在无需修改的情况下运行在 Windows 64 位版本上。WOW64 是在用户模式下实现的,作为 ntdll.dll 和内核之间的层。WOW64 及其支持的一些 DLL 仅仅是可以加载到 32 位进程中的 64 位的 DLL。对于所有其他情况,进程保持为纯进程。32 位的进程无法加载 64 位的 DLL,反之亦然。