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直接卡死)
本文讲述了在.NET开发中遇到C++DLL依赖问题的常见现象,如何通过VS开发者命令提示符的dumpbin/dependents工具追踪依赖,以及实际案例中libiomp5md.dll缺失的解决方法。还提到了CFFExplorer和depends.exe等其他工具的使用情况。
4695





