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

Posted

技术标签:

【中文标题】使用 Matlab Coder 将 Matlab m 文件转换为 C/C++ 代码,包括 mex 文件 (mxArray)【英文标题】:Convert Matlab m files into C/C++ codes using Matlab Coder, including mex files (mxArray) 【发布时间】:2015-04-13 04:07:40 【问题描述】:

我正在使用 Matlab Coder 从 matlab .m 文件生成 C/C++ 代码,该文件调用外部 C/C++ 函数。我做了一些工作,发现“code.ceval”成功了。

但是当.m 文件调用外部mex-files(使用mxArray)时,它会变得复杂。幸运的是,我有 mex 文件的原始 C/C++ 代码。

谁能告诉我在使用 Matlab Coder 生成 C/C++ 代码时如何包含 mex 文件(带有 mxArray 输入/输出),或者给我一个例子?

最好, 你的,聪

【问题讨论】:

【参考方案1】:

mex 文件需要在 MATLAB 中运行。它们不能在 MATLAB 之外运行。如果您使用 MATLAB coder 生成 mex 文件,则可以使用 coder.extrinsic 调用其他 mex 和 MATLAB 函数。否则只能调用常规的 C 函数。

【讨论】:

谢谢纳文。是的,当然,mex 文件只能在 MATLAB 中运行。但我有他们的 C/C++ 代码。所以,我应该能够将它们合并为外部 C/C++ 代码。唯一的事情就是编写接口。有什么想法吗? 即使使用 C/C++ 文件,如果您使用 mx 函数调用,它们也不起作用。例如,使用 mxCreate* API 创建 mxArrays 只能通过 MATLAB 进行。 好像没有。 mxArrays 可以在 C/C++ 环境下工作

以上是关于使用 Matlab Coder 将 Matlab m 文件转换为 C/C++ 代码,包括 mex 文件 (mxArray)的主要内容,如果未能解决你的问题,请参考以下文章

使用 Matlab Coder 将 C 字符数组转换为 Matlab 字符串

MATLAB 到 C++:MATLAB Coder 不支持 csvread()

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

MATLAB Coder 中的多态性

在 MATLAB Coder 中将 mxarrays 与 step 函数一起使用的问题

如何给matlab coder装license