是否可以将 mex 代码转换为 C++ 代码?

Posted

技术标签:

【中文标题】是否可以将 mex 代码转换为 C++ 代码?【英文标题】:Is it possible to convert mex code to C++ code? 【发布时间】:2012-07-30 18:43:57 【问题描述】:

我已经编写了一些 mex (c++) 代码,我使用了 mxArrays,以及一些其他的 Matlab 函数,我想知道是否可以通过包含适当的标头并进行一些小的更改来轻松地将其转换为 C++ 代码?

编辑: 通过“转换”,我的意思是我想编译和运行我的代码而不依赖(使用)matlab。

【问题讨论】:

mex 是一种依赖于平台的二进制格式。我真的怀疑你写过二进制代码。 @carlosdc,来自 mex 的标签描述“MEX 文件是由 C、C++ 或 Fortran 源代码生成的动态链接子例程,......”因此,假设他编写了 C++。 你只有 MEX 文件,还是有编译它的代码? 我希望我的代码能够独立于 Matlab 编译和运行。如果不使用 Matlab,我无法编译和运行我当前的代码(mex 环境中的 c++)。 @dmckee 和 carlosdc,这不是一件坏事。如果没有其他信息,他无法知道这样的图书馆是否已经存在。那么为什么不问一下呢? 【参考方案1】:

正如上面的 cmets 中所述,这项工作在很大程度上取决于您使用的 MATLAB 函数的性质。由于您已成功地将大部分 MATLAB 代码移植到 C++,我建议您继续这样做,直到您不再依赖 MATLAB 库来构建。

您是否依赖任何工具箱功能?如果是这样,这可能是一项比您意识到的更大的任务。

祝你好运!

【讨论】:

【参考方案2】:

您可以使用 SimulinkCoder 使其可执行 - 因此您可以在不使用 Matlab 的情况下运行它......但您仍然必须在每次更改代码时使用 Matlab 来使其可执行。

使用您指定 mex 文件的单个 S-Function 模块制作基本 Simulink 模型。 使用 SimulinkCoder (Real Time Workshop) 从 Simulink 模型中生成可执行文件。

【讨论】:

以上是关于是否可以将 mex 代码转换为 C++ 代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何将基于mpir库的VC9.0代码转换为Matlab mex函数?

MATLAB Coder 函数在 2014a 中未定义

使用 Matlab Coder 将 Matlab m 文件转换为 C/C++ 代码,包括 mex 文件 (mxArray)

如何找到 Matlab mex 文件的代码?

使用 MATLAB 编码器将 MATLAB 转换为 C++

Octave:可以编译 mex,但出现错误:“无法安装 .mex 文件功能”