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

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

解决方案:

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


出错原因分析:

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


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



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值