我对matlab mex函数很有经验,但我遇到了一个很难解决的问题。
我收到这样的消息:
无效的MEX文件 ' mymex.mexw64&#39 ;: 找不到指定的程序。
通常,此问题与缺少dll有关。 但是,我使用依赖walker多次检查,没有遗漏任何内容。
另外,我检查了"替代"软件,例如:ProcessMonitor,ProcessExplorer,CFF_Explorer ......等等。我已经尝试了一切。
当我尝试将旧代码从Matlab2012迁移到Matlab2015时,问题就出现了。
在此过程中:
我唯一的假设是使用了一些自定义* .lib文件。这些lib文件是在v110中编译的,我使用的是v140。在我的发行包中,我将dll包含在Visual C ++ Redistributable Packages v110 e v140中。我不确定这是否可行,虽然源代码编译得很好。
我没有测试删除这些* .libs,因为这会非常痛苦
我的问题是:
答案 0 :(得分:0)
我自己想出了答案。 事实证明,simulink在内部使用qt。因此,我的自定义应用程序中的Dll与simulink QT dll冲突。两者都有相同的名称,但simulink正在使用略有不同的QT版本。
QT声明使用相同的主要版本可以具有向后兼容性......但事实并非如此,至少在matlab环境中不是这样。