gpt4 book ai didi

c++ - 无效的 Mex 函数

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:07 25 4
gpt4 key购买 nike

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

我收到这样的消息:

Invalid MEX-file 'mymex.mexw64': The specified procedure could not be found.

一般情况下,这个问题与缺少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。在我的分发包中,我已经包含了 Visual C++ Redistributable Packages v110 和 v140 的 dll。我不确定这是否可行,尽管源代码编译得很好。

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

我的问题是:

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

最佳答案

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

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

关于c++ - 无效的 Mex 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46036696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com