dll依赖问题在.net开发中屡见不鲜,特别是在调用c++的dll时更是如此。报错信息(包括对应的堆栈异常信息)一般无法得知具体是哪一个dll没能成功加载(纯.net的dll可以,但如果是c/c++的dll依赖于另一个c/c++的dll则没办法),具体表现为加载某个dll时,该dll无法加载或其依赖项无法加载。
但我们可以通过命令行工具来查看出错dll的依赖项即可,如果列出的dll没有出现在当前目录下或者系统变量PATH路径,大概率可能就是没有找到这些依赖项目dll。
一般解决办法是确认一遍所有列出的dll是否都在当前运行目录下即可(可能需要递归查看依赖dll),
想办法补全即可。通常这种都是c++的dll依赖问题,有多数原因是sdk或某些软件包没有安装导致的,例如matlab相关的开发。
具体查看方法:
在vs开发人员命令提示符,执行以下命令即可:
dumpbin /dependents StrainToDisplacement.dll
对于我的情况,实际缺少的是libiomp5md.dll文件,安装回matlab运行时即可。
其他可用工具:
1. CFF Explorer如下图所示:
2. depends.exe(不好用,在我的电脑上一打开dll直接卡死)