[Matlab]Invalid mex-file 找不到指定的模块

     在Matlab平台项目中,之前曾经碰到过这个问题——Invalid mex-file 找不到指定的模块。

     .cpp  .h和.dll放在不同的文件夹下,在.cpp中使用.h .dll都是使用的相对路径,通过mex test.cpp编译是可以成功的,但是在调用的时候就会出问题。(原因未知)

      所以mexw64文件和.h .dll应该在同目录下,并且使用到mexw64库函数的.m文件也必须放在同一个目录下面,所以最后就是.m .mexw64 .h .dll文件都放到同目录下问题就解决了。


       但这次碰到的问题是使用到的mexw64是给的现成的文件,并没有发现有别的附带文件。因为项目是从上一届学长手中接过来的,一开始项目目录很大有几百兆,慢慢的发现了工程目录下有许多无关的文件,后来我就把需要的文件都拿出来了经过所有功能测试也没问题,但是换到别的电脑上测试就报错了。

[Matlab]Invalid mex-file 找不到指定的模块_第1张图片

mexw64文件是确定存在的,跟.m文件同目录。经过一番查找,大部分都是说缺dll,具体也没说缺什么dll应该怎么找。

解决方案:

用DLL依赖性分析工具(比如Dependency Walker等) 找到mexw64依赖的所有dll,并把dll都跟mexw64放在同目录下。


出错原因分析:

由于项目中使用到了Inter的ipp库,我在电脑上已经安装的库中有包含ipp的dll,并且该库的bin目录也添加到了环境变量中,项目没有报错我觉得是因为调用mexw64时从环境变量中别的库中找到了dll,所以在我自己电脑上测试并没有发现问题。但是换到别的电脑上可能是缺ipp的dll,所以就出问题了。


Tips: 在使用到mexw64文件时,最好把cpp里面所用到的所有dll都放到项目目录下,以防在后期调用出现问题,还比较难找原因。



你可能感兴趣的:([Matlab]Invalid mex-file 找不到指定的模块)