【问题标题】:Call matlab mex file in C++在 C++ 中调用 matlab mex 文件
【发布时间】:2013-02-19 00:00:43
【问题描述】:

我有一个已知接口的 Matlab mex 文件,这个 mex 文件是由其他人提供的,所以我无法访问代码。有没有什么有效的方法可以在 C++ 中调用 mex 函数?谢谢!

【问题讨论】:

    标签: c++ matlab mex


    【解决方案1】:

    您是否考虑过使用mexCallMatlab
    您可以将 mex 文件视为标准 matlab 函数,并使用 mexCallMatlab 从 C++ 调用它。

    【讨论】:

      【解决方案2】:
      1. mexext 调用 来自 Matlab 告诉您允许的系统兼容。 (32 位或 64 位)

      2. 无法从 C++ 环境调用mex 编译的可执行文件AFAIK。它们与 Matlab 命令窗口/ Matlab 函数一起工作。

      例如:

      system("mymex") 会给我错误:

      'mymex' is not recognized as an internal or external command,
      operable program or batch file.
      

      系统(“ttt.mexw32”);

      will popup a window asking me to select a program to open that file with.
      

      我自己也怀疑在一个系统上编译的 .mexw32/.mexw64 可能与 .exe(可执行文件)一样在其他系统上运行。可能是Matlab Release版本不兼容等原因(对此了解不多,请查一下)

      您可以轻松地将他们的 mex 可执行文件与 Matlab 一起使用。

      【讨论】:

        【解决方案3】:

        mex 文件只是动态库。您可以使用LoadLibrary 加载它们并使用GetProcAddress 调用它们的函数。 (或在 *nix、dlopendlsym 上等效)。

        将参数设置为与 MatLab 传递的内容兼容会有点麻烦,但并不是特别困难。如果您有自己编写 mex 函数的经验,这将有所帮助,因此您熟悉调用约定。

        【讨论】:

        • 是否需要安装 Matlab 才能使用此功能并从 C++ 调用 mex?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        • 1970-01-01
        • 2013-02-14
        • 1970-01-01
        相关资源
        最近更新 更多