问题描述
在跑MATLAB和C++混合编程的一个算法时,出现了如下错误:
MEX 文件 'C:\Project\final code\reference code\lsd.mexw64' 无效: 找不到指定的模块。
如下图所示:

原因分析
根据资料[1]的说法,*.mexw64文件无效可能的原因是缺少相关的*.dll文件,因此只需把缺少的*.dll文件复制到 *.mexw64 文件所在的目录下即可。

但是这些*.dll文件还是不够的,我们需要知道 *.mexw64 依赖的所有DLL文件。
解决方案
博客[2] 中给出了一个查找mex所依赖的dll文件的方法。
- 下载Dependency Walker (http://www.dependencywalker.com/)
- 在Dependency Walker里面导入有bug的
*.mexw64文件,得到如下结果:

- 发现缺少了
msvcp100.dll和msvcr100.dll这两个文件(libmx.dll在MATLAB的安装路径中可以找到),在网上(例如:DLL下载站)下载缺少的两个DLL文件。 - 将这两个文件放到
*.mexw64文件所在的目录下,成功运行。

参考资料
- 解决 Invalid MEX-file ‘xxx.mexw64‘: 找不到指定的模块 的问题
- 解决Matlab: Invalid MEX-file



















