未能加载文件或程序集“XXX.dll”或它的某个依赖项的解决方法

问题:
昨天从开发机拷贝exe程序到测试机上测试时,发现程序一运行就报以下错误:未能加载文件或程序集“A.dll”或它的某一个依赖项。找不到指定的模块。
在这里插入图片描述
相关知识:
1.应用程序查找依赖的dll时,顺序为先查找程序exe的输出路径,如果没有找到,那么会去C:\Windows\System32文件夹中查找(如果exe为64位应用程序的话),或者去C:\Windows\SysWows64文件夹查找(exe为32位应用程序的话)。
2. 如果A.dll找到了,但是A.dll依赖的B.dll没有找到,也会报上述错误,但这时它有可能只会提示没有找到A.dll。此时我们可以用Visual Studio中的dumpbin.exe工具查找A.dll的依赖项,具体可以参考这篇博文
https://blog.csdn.net/jirryzhang/article/details/53816577

所以上述错误产生的原因可能为:
1.没有在exe指定A.dll所在的目录下找到A.dll(一般来说这个目录就是exe所在的目录)。
2.如果在开发机能正常运行该exe,而测试机却出现上述错误,那么就很有可能是我们把程序直接或间接依赖的某个dll放在了C:\Windows\System32文件夹或者C:\Windows\SysWows64文件夹中,然而的测试机的C盘中的这两个文件夹并没有该dll。

一般来说我们碰到上述问题可以按以下顺序排查错误:
解决方法:
1.如果提示的A.dll未找到,首先我们进入存放exe程序依赖的A.dll的位置(一般来说默认是放在exe同目录下)或者C盘的那两个文件夹,如果找不到A.dll那么就会出现上述错误,此时我们将A.dll放在该目录下查看问题是否解决。
2.如果未出现步骤1的情况或将A.dll放在该目录下仍报该错误。那么可能是A.dll依赖的dll没有放在该目录下,这时我们可以使用Visual Studio中的dumpbin查找A.dll依赖的dll是否放在该目录或者是C盘的那两个文件夹里,如果没有找到的话就从开发机拷贝出相应dll放在A.dll所在的目录里(不建议放在C盘的文件夹里,因为你不能保证其他电脑的C盘都有该dll),再进行测试看问题是否解决。

如何避免上述情况的产生:
平常我们做开发的时候,程序能正常跑通的话,最好去比较干净的,没有开发环境的电脑上自己测试一下…

补充:
当然出现上述情况的可能不止上述我提的原因,例如可能是dll的版本不对(比如32位的exe引用了64位的dll)等等情况…
上述归纳总结由于时间原因没有经过严谨论证,如果有疏忽错误欢迎批评指正。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
文件名:Sysinternals 实用程序.rar 文件大小:51,602,772字节 MD5:15A9888D4D11F8D0BAF501E7A2723A39 SHA1:339A24E2A1ACDEE012BA63B165DB2BC1E3455871 CRC32:9A768F7F 大名鼎鼎的Sysinternals工具都应该听说过吧,比较有名的有Process Explorer、TCPView、Autoruns、Filemon、PsTools等。这次发的是这一系列实用工具的全,这是真正意义上的全,甚至包括了几个已经被官方宣布退役、不再提供下载的工具。 每个工具都内附mht格式的官方说明,可用IE打开。 这次发的是完整版,不需要分段解压。 ---------------------------------------------------- ★Sysinternals 实用工具:文件和磁盘 AccessChk 此工具向您显示,您所指定的用户或用户组对文件、注册表或 Windows 服务具有的访问权限。 AccessEnum 这一简单但强大的安全工具可以向您显示,谁可以用何种访问权限访问您系统中的目录、文件和注册表。使用此工具可查找权限漏洞。 CacheSet CacheSet 是一个允许您利用 NT 提供的功能来控制缓存管理器的工作大小的程序。它与 NT 的所有版本都兼容。 Contig 您是否希望迅速对您频繁使用的文件进行碎片整理?使用 Contig 优化单个的文件,或者创建连续的新文件。 DiskExt 显示卷磁盘映射 Diskmon 此实用工具会捕捉所有硬盘活动,或者在您的系统任务栏中象软件磁盘活动灯一样工作。 DiskView 图形磁盘扇区实用工具 Du 按目录查看磁盘使用情况 EFSDump 查看有关加密文件的信息 Filemon 此监视工具允许您实时查看文件系统的所有活动。 接合点 创建 Win2K NTFS 符号链接 LDMDump 转储逻辑磁盘管理器在磁盘上的数据库内容,其中说明了 Windows 2000 动态磁盘的分区情况。 MoveFile 为系统下一次重新启动安排文件重命名和删除命令。这对于清除顽固或使用中的恶意文件很有用。 NTFSInfo 用 NTFSInfo 可以查看有关 NTFS 卷的详细信息,包括主文件表 (MFT) 和 MFT 区的大小和位置,以及 NTFS 元数据文件的大小。 PageDefrag 对您的分页文件和注册表配置单元进行碎片整理! PendMoves 查看在系统下一次启动时安排删除或重命名哪些文件。 Process Monitor 实时监视文件系统、注册表、进程、线程和 DLL 活动。 PsFile 查看哪些文件被远程打开 PsTools PsTools 套件包括一些命令行实用工具,可列出在本地或远程计算机上运行的进程、远程运行进程、重新启动计算机、转储事件日志等等。 SDelete 安全地覆盖敏感文件,并使用此符合 DoD 的安全删除程序清理先前删除文件所在的可用空间。 ShareEnum 扫描网络中的文件共享并查看其安全设置,以便堵住安全漏洞。 Sigcheck 转储文件版本信息并检查系统中的映像是否已进行数字签名。 Streams 显示 NTFS 备用数据流 Sync 刷新缓存数据到磁盘 VolumeId 设置 FAT 或 NTFS 驱动器的卷 ID ★Sysinternals 实用工具:安全性 AccessChk 该工具显示您指定的用户或用户组对文件、注册表或 Windows 服务具有的访问权限。 AccessEnum 这一简单但功能强大的安全工具可以显示哪些用户对您系统中的目录、文件和注册表具有何种访问权限。使用此工具可查找权限漏洞。 Autologon 在登录过程中跳过密码屏幕。 Autoruns 查看哪些程序被配置为在系统启动和您登录时自动启动。Autoruns 还能够完整列出应用程序可以配置自动启动设置的注册表和文件位置。 LogonSessions 列出活动的登录会话 NewSID 了解每个人都一直在谈论的计算机 SID 问题并获取免费的计算机 SID 更改器 NewSID。 Process Explorer 找出进程打开了哪些文件、注册表和其他对象以及已加载哪些 DLL 等信息。这个功能异常强大的实用工具甚至可以显示每个进程的所有者。 PsExec 使用受限用户权限执行进程。 PsLoggedOn 显示登录到某个系统的用户 PsLogList 转储事件日志记录。 PsTools PsTools 套件包括几款命令行实用工具,可列出正在远程或本地计算机上运行的进程、以远程方式运行进程、重新启动计算机、转储事件日志以及执行其他任务。 RootkitRevealer 扫描系统以找出基于 Rootkit 的恶意软件 SDelete 安全地覆盖敏感文件,并使用这一符合 DoD 的安全删除程序清理先前删除的文件的可用空间。 ShareEnum 扫描网络中的文件共享并查看其安全设置,以便堵住安全漏洞。 Sigcheck 转储文件版本信息并验证系统中的映像已进行数字签名。 ★Sysinternals 实用工具:联网功能 AdRestore 恢复已删除的 Server 2003 Active Directory 对象 PsFile 查看远程打开的文件 PsTools PsTools 套件包括几款命令行工具,可侦听远程或本地计算机上运行的进程、远程运行的进程,还可以重新启动计算机以及转储事件日志等等。 ShareEnum 扫描网络上的文件共享并查看其安全设置,以关闭安全漏洞。 TCPView 活动套接字命令行查看器。 Whois 查看 Internet 地址的所有者。 ★Sysinternals 实用工具:系统信息 Autoruns 查看哪些程序被配置为在系统启动和您登录时自动启动。Autoruns 也会完整列出应用程序可以配置自动启动设置的注册表和文件位置。 ClockRes 查看系统时钟的分辨率,亦即最大计时器分辨率 Filemon 此监视工具用于实时查看文件系统的所有活动。 Handle 这一方便的命令行实用工具会显示哪些进程打开了哪些文件,以及更多其他信息 LiveKd 使用 Microsoft 内核调试程序检查真实系统。 LoadOrder 查看设备加载到 WinNT/2K 系统中的顺序 LogonSessions 列出系统中的活动登录会话 PendMoves 枚举在系统下一次启动时所要执行的文件重命名和删除命令的列表 Process Explorer 找出进程打开了哪些文件、注册表和其他对象,已加载了哪些 DLL 等信息。这个功能异常强大的实用工具甚至可以显示每个进程的所有者。 Process Monitor 实时监视文件系统、注册表、进程、线程和 DLL 活动。 ProcFeatures 这一小程序会报告处理器和 Windows 对“物理地址扩展”和“无执行”缓冲区溢出保护的支持情况。 PsInfo 获取某系统的相关信息 PsLoggedOn 显示登录到某个系统的用户 PsTools PsTools 套件包括几款命令行工具,可侦听远程或本地计算机上运行的进程、远程运行进程、重新启动计算机、转储事件日志,以及执行其他任务。 Regmon 此监视工具用于实时查看注册表的所有活动。 Winobj 基本对象管理器命名空间查看器。 ★Sysinternals 实用工具:进程 Autoruns 查看哪些程序被配置为在系统启动和您登录时自动启动。Autoruns 也可向您显示注册表和文件位置的完整列表,应用程序可在此配置自动启动设置。 Filemon 此监视工具使您可以实时查看文件系统的所有活动。 Handle 此易用命令行实用工具将显示哪些进程打开了哪些文件,以及更多其他信息。 ListDLLs 列出所有当前加载DLL,包括加载位置及其版本号。2.0 版将打印已加载模块的完整路径名。 Portmon 通过高级监视工具监视串行端口和并行端口的活动。它能识别所有的标准串行和并行 IOCTL,甚至可以显示部分正在发送和接收的数据。3.x 版具有强大的新 UI 增强功能和高级筛选功能。 Process Explorer 找出进程打开了哪些文件、注册表和其他对象,已加载哪些 DLL 等信息。这个功能异常强大的实用工具甚至可以显示每个进程的所有者。 Process Monitor 实时监视文件系统、注册表、进程、线程和 DLL 活动。 PsExec 远程执行进程。 PsKill 终止本地或远程进程。 PsList 显示有关进程和线程的信息。 PsService 查看和控制服务。 PsSuspend 挂起和继续进程。 PsTools PsTools 套件包括几个命令行实用工具,可列出本地或远程计算机上运行的进程、远程运行进程,还可以重新启动计算机以及转储事件日志等等。 Regmon 此监视工具使您可以实时查看注册表的所有活动。 ★Sysinternals Miscellaneous Utilities AD Explorer Active Directory Explorer is an advanced Active Directory (AD) viewer and editor. AdRestore Restore tombstoned Active Directory objects in Server 2003 domains. Autologon Bypass password screen during logon. BgInfo This fully-configurable program automatically generates desktop backgrounds that include important information about the system including IP addresses, computer name, network adapters, and more. BlueScreen This screen saver not only accurately simulates Blue Screens, but simulated reboots as well (complete with CHKDSK), and works on Windows NT 4, Windows 2000, Windows XP, Server 2003 and Windows 9x. Ctrl2cap This is a kernel-mode driver that demonstrates keyboard input filtering just above the keyboard class driver in order to turn caps-locks into control keys. Filtering at this level allows conversion and hiding of keys before NT even "sees" them. Ctrl2cap also shows how to use NtDisplayString() to print messages to the initialization blue-screen. DebugView Another first from Sysinternals: This program intercepts calls made to DbgPrint by device drivers and OutputDebugString made by Win32 programs. It allows for viewing and recording of debug session output on your local machine or across the Internet without an active debugger. Desktops This new utility enables you to create up to four virtual desktops and to use a tray interface or hotkeys to preview what’s on each desktop and easily switch between them. Hex2dec Convert hex numbers to decimal and vice versa. PsLogList Dump event log records. PsTools The PsTools suite includes command-line utilities for listing the processes running on local or remote computers, running processes remotely, rebooting computers, dumping event logs, and more. RegDelNull Scan for and delete Registry keys that contain embedded null-characters that are otherwise undeleteable by standard Registry-editing tools. RegJump Jump to the registry path you specify in Regedit. Strings Search for ANSI and UNICODE strings in binary images. ZoomIt Presentation utility for zooming and drawing on the screen.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值