【问题标题】:Error: Invalid MEX file, the specified module could not be found错误:无效的 MEX 文件,找不到指定的模块
【发布时间】:2013-02-26 14:53:06
【问题描述】:

我已经在我的笔记本电脑上成功编译了 Mex 文件。但是当我运行它时,它会显示Invalid mex file 'c:\newfolder\filename.mexw32' The specified module could not be found

System specification:  
OS: windows 7  
MATLAB 2010a  
Microsoft Visual Studio 2008.  

相同的 mex 文件在我的 PC 下的 XP SP3 下编译并成功运行。

【问题讨论】:

  • 您安装的是 32 位还是 64 位?
  • 是的,我有 32 位安装。我的操作系统也是 32 位的
  • 在配置文件模式下使用 MS Dependency Walker 进行调试

标签: matlab mex


【解决方案1】:

你的 mex 文件是否在另一个系统上,而不是创建它的系统上?

如果是这样,那么您需要在该机器上安装Microsoft Visual C++ Redistributable

【讨论】:

  • 不,我在两台机器上分别编译了mex文件并且成功了。但是当我试图在我的笔记本电脑上运行那个 mexw32 文件时,它显示错误。
【解决方案2】:

This MathWorks support link 为您的问题提出了两个可能的原因:

  1. 您没有 MEX 函数所依赖的所有必要库。
  2. 您在与编译时不同的 MATLAB 版本上运行 MEX 文件。

无论哪种方式,要找到此错误的来源,它表示您需要列出所有依赖库文件并验证它们在您尝试运行 MEX 文件的系统中是否存在,并且还推荐 Dependecy Walker 为执行此操作的工具。

【讨论】:

  • 使用 Dependency Walker 后,它显示.. ? CV210d.dll ? cxcore210d.dll ? libmex.dll ? libmx.dll。对于上述所有情况,它显示“打开文件时出错。系统找不到指定的文件(2)。”
  • @anand 这与 OpenCV 相关。你的笔记本电脑上有这个文件吗?
  • 是的,我的笔记本电脑上的所有这些文件都在 C:\OpenCV2.1\bin 目录中。我不知道在此之后该怎么办...请提出解决方案。
  • @anand 问题是这些文件是否在 Windows 注册表中注册。 MEX 文件的构建可能有效,因为 DLL 是在运行时动态链接的库。
  • 谢谢 EitanT。当我在环境变量中添加 'C:\OpenCV2.1\bin' 路径时,问题就解决了。
【解决方案3】:

我从 Matlab2010a/VS2008 升级到 Matlab2013a/VS2010 时也遇到了这个问题。

我的所有环境变量都已正确发送。 重新启动修复了未找到 OpenCV dll 的问题,我认为它仍在尝试链接到 VS2008 的 OpenCV dll(即使我已经更改了路径)。但是我的 mex 文件仍然找不到 libmex.dll。

我在安装 Matlab2013a 的时候,并没有卸载旧版本(以防万一我想回去)。 然而,这是我的问题的原因。 一旦我卸载了旧版本的 Matlab 并重新启动,问题就消失了。

【讨论】:

    【解决方案4】:

    我遇到了类似的问题。我只链接了 1 个“lib”,所以我只是将该 lib 复制到与 mexw64 相同的文件夹中,它就可以工作了。

    我没有四处寻找正确的位置来告诉 MATLAB 将 lib 的真实位置添加到它正在查看的任何路径中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 2016-09-19
      • 2017-05-06
      • 2015-12-22
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多