【问题标题】:Invalid Mex-function无效的 Mex 函数
【发布时间】:2017-09-04 12:05:46
【问题描述】:

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

我收到这样的消息:

无效的 MEX 文件 'mymex.mexw64': 找不到指定的过程。

通常,此问题与缺少 dll 有关。 但是,我用dependency walker检查了几次,没有任何遗漏。

另外,我检查了“替代”软件,例如:ProcessMonitor、ProcessExplorer、CFF_Explorer...等等。我什么都试过了。

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

在这个过程中:

  1. 我将 libmx、libmex 更新为当前版本 (2015)
  2. 已将 qt 版本更改为新版本(是的,我的 mex 函数使用 qt)
  3. 将平台更改为 v140(旧版本为 v110,Visual Studio 2012)

我唯一的假设是使用了一些自定义 *.lib 文件。这些lib文件是v110编译的,我用的是v140。在我的分发包中,我将 dll 包含在 Visual C++ Redistributable Packages v110 和 v140 中。我不确定这是否可能,尽管源代码编译得很好。

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

我的问题是:

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

【问题讨论】:

标签: c++ matlab mex


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 2015-03-28
    • 2016-09-19
    • 2019-12-23
    • 1970-01-01
    • 2010-11-19
    • 2012-03-20
    • 1970-01-01
    相关资源
    最近更新 更多