关于dll not found 排查解决

  首先这个问题引起的原因就是程序运行时加载dll无法在当前环境下找到,然而百度搜索的大部分结果可能会让这个问题更加混乱难以解决,甚至让你走弯路最后导致你放弃一些技术方案或者运行系统。求人不如求己,该文章就dll not found如何排查进行讲解为自己总结一次也为各位搜到这篇文章急需解决的各位朋友提供一些帮助。

准备工具:

depends 下载地址:http://www.dependencywalker.com/ 用来查看进程或dll的相关依赖 不过这个工具已经停止维护了

Dependencies 下载地址:https://github.com/lucasg/Dependencies/releases  depends的替代品 目前代码还在更新

ProcessMonitor 下载地址:https://download.sysinternals.com/files/ProcessMonitor.zip 进程监视器,将你进程运行过程中的行为都打印出来

排查问题:

1、检查自己的引用dll名字是否正确,粗心大意将dll引用写错这是最尴尬的。

2、使用depends进行 排查当前环境是否缺少依赖的dll, 放在5,6年前大部分的dll基本还是C++编译基本上缺少的dll我们都很容易通过它迅速在当前机器的runtime中找到复制到程序根目录也就解决了。

3、当今各种跨平台语言流行,交叉编译依赖的库导致的dll not found就多了起来,而且在使用depends 或者 dependencies 有时候可能会让你混乱 引用列表红一大片你也不知道真正缺少的dll是什么,这时候我们就应该使用到ProcessMonitor 来通过进程运行日志来排查真正缺少的dll是什么,一般打印日志都会明确的告诉你not found dll是什么只要细心一点肯定可以排查出来。

总结:

以上工具使用方式将在其它文章进行补足,该文章仅仅是为dll not found排查进行思路引导,因为大部分人遇到dll not found的第一件事很有可能就是百度搜索,但是这样反而容易让你的问题排进入到错误的方向!因为大部分情况下我们使用的dll几乎是不相同的,比如各种二次开发的sdk 如果你将别人解决sdk dll not found 的解决方法拿来解决自己的问题那么99%是没办法解决你当前的囧境。所以学会使用工具、日志更加科学的排查自己遇到的问题才是真正的解决办法。

原文地址:https://www.cnblogs.com/dongzhaosheng/p/14775109.html