C# 调用一个dll文件提示:无法加载 DLL“C:\Users\lxh\Desktop\dll\xxx.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
经过查找可能是缺少该dll的依赖项,需要通过命令dumpbin将其dump出来,然后放在相应的文件夹中即可解决问题。
1. 前提条件,将dumpbin命令加入到环境变量中,这里dumpbin位于目录 D:\vs2012\VC\bin下,根据 需要自行修改。
如果不加入环境变量会报: “'dumpbin' 不是内部或外部命令,也不是可运行的程序或批处理文件。”
2. 使用命令dumpbin
dumpbin /dependents C:\Users\lxh\Desktop\dll\xxx.dll
这里,C:\Users\lxh\Desktop\dll\xxx.dll是该dll的路径,它有可能会提示缺少mspdb100.dll ,因为计算机中丢失mspdb100.dll。尝试重新安装该程序以解决此问题。将你vs安装目录的Common7\IDE\下mspdb100.dll 这个文件复制到到VC\Bin\下即可。
最后看下依赖结果:
Microsoft (R) COFF/PE Dumper Version 11.00.50727.1
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file C:\Users\lxh\Desktop\dll\xxx.dll
File Type: DLL
Image has the following dependencies:
MSVCP100D.dll
MSVCR100D.dll
KERNEL32.dll
Summary
1000 .data
1000 .idata
2000 .rdata
1000 .reloc
1000 .rsrc
6000 .text
10000 .textbss
最后相应的dll存放路径:
64位系统放到这个C:\Windows\SysWOW64,32位系统放到这个C:\Windows\System32。