MEX 文件 ‘lsd.mexw64‘ 无效: 找不到指定的模块。问题解决方法

问题描述

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


原因分析

根据资料[1]的说法,*.mexw64文件无效可能的原因是缺少相关的*.dll文件,因此只需把缺少的*.dll文件复制到 *.mexw64 文件所在的目录下即可。
MEX 文件 ‘lsd.mexw64‘ 无效: 找不到指定的模块。问题解决方法_第2张图片
但是这些*.dll文件还是不够的,我们需要知道 *.mexw64 依赖的所有DLL文件。


解决方案

博客[2] 中给出了一个查找mex所依赖的dll文件的方法。

  1. 下载Dependency Walker (http://www.dependencywalker.com/)
  2. 在Dependency Walker里面导入有bug的*.mexw64 文件,得到如下结果:
    MEX 文件 ‘lsd.mexw64‘ 无效: 找不到指定的模块。问题解决方法_第3张图片
  3. 发现缺少了 msvcp100.dllmsvcr100.dll 这两个文件(libmx.dll 在MATLAB的安装路径中可以找到),在网上(例如:DLL下载站)下载缺少的两个DLL文件。
  4. 将这两个文件放到 *.mexw64 文件所在的目录下,成功运行。
    MEX 文件 ‘lsd.mexw64‘ 无效: 找不到指定的模块。问题解决方法_第4张图片

参考资料

  1. 解决 Invalid MEX-file ‘xxx.mexw64‘: 找不到指定的模块 的问题
  2. 解决Matlab: Invalid MEX-file

你可能感兴趣的:(#,MATLAB,编程问题,matlab,开发语言)