无效的Mex函数

时间:2017-09-04 12:05:46

标签: c++ matlab mex

我对matlab mex函数很有经验,但我遇到了一个很难解决的问题。

我收到这样的消息:

  

无效的MEX文件   ' mymex.mexw64&#39 ;:   找不到指定的程序。

通常,此问题与缺少dll有关。 但是,我使用依赖walker多次检查,没有遗漏任何内容。

另外,我检查了"替代"软件,例如:ProcessMonitor,ProcessExplorer,CFF_Explorer ......等等。我已经尝试了一切。

当我尝试将旧代码从Matlab2012迁移到Matlab2015时,问题就出现了。

在此过程中:

  1. 我将libmx,libmex更新为当前的(2015)
  2. 将qt版本更改为新版本(是的,我的mex函数使用qt)
  3. 将平台更改为v140(旧版本为v110,Visual Studio 2012)
  4. 我唯一的假设是使用了一些自定义* .lib文件。这些lib文件是在v110中编译的,我使用的是v140。在我的发行包中,我将dll包含在Visual C ++ Redistributable Packages v110 e v140中。我不确定这是否可行,虽然源代码编译得很好。

    我没有测试删除这些* .libs,因为这会非常痛苦

    我的问题是:

    1. 我的假设是否有效?
    2. 有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我自己想出了答案。 事实证明,simulink在内部使用qt。因此,我的自定义应用程序中的Dll与simulink QT dll冲突。两者都有相同的名称,但simulink正在使用略有不同的QT版本。

QT声明使用相同的主要版本可以具有向后兼容性......但事实并非如此,至少在matlab环境中不是这样。