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。

获取dll的依赖项方法